因此这两种方法都存在问题。方法(this.howMuch)应该计算给定汽车行驶的距离(基于速度和时间输入)。方法(this.printAll)应该打印有关数组中对象的所有信息。我看到的唯一错误是“ carConstruct.howMuch在HTMLButtonElement上不是函数”。如果我删除第一种方法,则第二种方法会出现相同的错误。

所有帮助表示赞赏。代码如下:



var vardas = document.getElementById("name");
var laikas = document.getElementById("time");
var greitis = document.getElementById("speed");
var driver = document.getElementById("driver");
var addCar = document.getElementById("addCar");
var race = document.getElementById("race");
var box = document.getElementById("box");
var cars = [];

function carConstruct(name, time, speed, driver, distance){
    this.name = name;
    this.time = time;
    this.speed = speed;
    this.driver = driver;
    this.distance = 0;
    this.howMuch = function(){
        for(var i=0; i<cars[i]["time"]; i++){
            this.distance = this.distance + (cars[i]["speed"] * cars[i]["time"]);
        }
    }
    this.printAll = function(){
        for(var i=0; i<cars.length; i++){
        console.log(cars[i]["name"]);
        console.log(cars[i]["speed"]);
        console.log(cars[i]["driver"]);
        console.log(cars[i]["distance"]);
        }
    }
}

addCar.addEventListener("click", function(){
    var carNew = new carConstruct(vardas.value, laikas.value, greitis.value, driver.value);
    cars.push(carNew);
    vardas.value = "";
    greitis.value = "";
    driver.value = "";
});

race.addEventListener("click", function(){
    carConstruct.howMuch();
    carConstruct.printAll();
});

<!doctype html>
<html>
    <head>
        <title>J21ND</title>
        <meta charset="utf-8">
        <link rel="stylesheet" type="text/css" href="J21ND.css">
    </head>
    <body>
        <div class="fields">
            <h1>Car Race</h1>
            <input id="name" type="text" placeholder="Input car name">
            <input id="time" type="number" placeholder="Input car time">
            <input id="speed" type="number" placeholder="Input car speed">
            <input id="driver" type="text" placeholder="Input driver level, select: Rookie or Pro">
        </div>
        <div class="buttons">
            <button id="addCar">Add Car</button>
            <button id="race">Start Race</button>
        </div>
        <div id="box">
        </div>
        <script src="J21ND.js"></script>
    </body>
</html>

最佳答案

您可以通过简单地添加一个全局标志来做到这一点。这是自定义的代码。

// Above code will remain same in js and HTML code will remain same as well
    var flag =0;
    addCar.addEventListener("click", function(){
            var carNew = new carConstruct(vardas.value, laikas.value, greitis.value, driver.value);
            cars.push(carNew);
            flag=1;
            vardas.value = "";
            greitis.value = "";
            driver.value = "";
        });

        race.addEventListener("click", function(){
            if(flag!=0){
               var addedCar = cars.pop()
               addedCar.howMuch();
               addedCar.printAll();
               flag =0;
            }else{
               alert('Please Add Car First');
               flag =0;
            }
        });

关于javascript - 函数或循环不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41212350/

10-12 00:11
查看更多