1

语法错误已修复。Dreamweaver 说我在第 52 行的代码中有错误。我看不出有什么问题?也许这与我的 if 和 else 语句不起作用这一事实有关。

IF 和 ELSE 语句已修复。如果我单独测试 if 和 else 语句,它们可以正常工作,但是当我运行整个文档时,它们不会运行。有人可以告诉我错误和我的 if/else 语句不起作用是否相关,或者是否还有其他问题。

<script>
var car1=new Object();
car1.Name="Rusty";
car1.Speed="1px", 40;
car1.Distance=0;

var car2=new Object();
car2.Name="Dusty";
car2.Speed="2px", 40; 
car2.Distance=0;

var car3=new Object();
car3.Name="Crankshaft";
car3.Speed="4px", 40;
car3.Distance=0;

function runRusty(){

setInterval(function(){moveRusty()},40);

    function moveRusty(){car1.Distance=car1.Distance +1
        document.getElementById("rusty").style.marginLeft=car1.Distance + "px" 
        };
};


function runDusty(){

setInterval(function(){moveDusty()},40);

    function moveDusty(){car2.Distance=car2.Distance +1
        document.getElementById("dusty").style.marginLeft=car2.Distance + "px" 
        };
 };


function runCrankshaft(){

setInterval(function(){moveCrank()},40);

    function moveCrank(){car3.Distance=car3.Distance +1
          document.getElementById("crankshaft").style.marginLeft=car3.Distance + "px" 
        };
};


function winLose () {if (document.getElementById("rusty").style.marginLeft="900px"){
                     alert("Winner is Rusty!");
                     clearInterval(runRusty);
                     }

else    if(document.getElementById("dusty").style.marginLeft="900px"){
                    alert("Winner is Dusty!");
                    clearInterval(runDusty);
                    }

                else if(document.getElementById("crankshaft").style.marginLeft="900px"){
                    alert("Winner is Crankshaft!");
                    clearInterval(runCrankshaft);
                    };
                };
</script>

编辑:

if 和 else 语句现在可以工作,因为我更改了全局声明我的函数并稍微更改了它们。代码现在看起来像这样:

    var car1=new Object();
    car1.Name="Rusty";
    car1.Speed=1;
car1.Distance=0;

var car2=new Object();
car2.Name="Dusty";
car2.Speed=2; 
car2.Distance=0;

var car3=new Object();
car3.Name="Crankshaft";
car3.Speed=4;
car3.Distance=0;

var moveRusty;
var moveDusty;
var moveCrankShaft;


function runRusty(){

moveRusty=setInterval(function(){

        car1.Distance=car1.Distance + car1.Speed;
        document.getElementById("rusty").style.marginLeft=car1.Distance + "px";
        winLose();
        },40);
};


function runDusty(){

moveDusty=setInterval(function(){

        car2.Distance=car2.Distance + car2.Speed;
        document.getElementById("dusty").style.marginLeft=car2.Distance + "px"; 
        winLose();
        },40);
};

function runCrankshaft(){

moveCrankShaft=setInterval(function(){

        car3.Distance=car3.Distance + car3.Speed;
        document.getElementById("crankshaft").style.marginLeft=car3.Distance + "px"; 
        winLose();
        },40);
}

function winLose () {

    if (car1.Distance >= 900){
        alert("Winner is Rusty!");
        car1.Distance = 0;
        car1.Speed = 0;
        car2.Distance = 0;
        car2.Speed = 0;
        car3.Distance = 0;
        car3.Speed = 0;



    }

    else 

    if(car2.Distance >= 900){
        alert("Winner is Dusty!");
        car1.Distance = 0;
        car1.Speed = 0;
        car2.Distance = 0;
        car2.Speed = 0;
        car3.Distance = 0;
        car3.Speed = 0;


    }

    else 

    if(car3.Distance >= 900){
        alert("Winner is Crankshaft!");
        car1.Distance = 0;
        car1.Speed = 0;
        car2.Distance = 0;
        car2.Speed = 0;
        car3.Distance = 0;
        car3.Speed = 0;

    }
};

clearInterval(moveRusty);
clearInterval(moveDusty);
clearInterval(moveCrankShaft);

现在一切正常。所有警报都会发生,并且汽车的位置会被重置。但是我所有的 clearInterval() 都不起作用。我不知道 clearInterval() 是否正确使用。我想要做的是重置页面,以便我可以再次运行“游戏”。现在,唯一的方法是刷新页面。我已经仔细检查了我是如何声明我的 setInterval() 以及我如何在我的 clearInterval() 中调用它们的,就我而言,这是对的吗?

4

3 回答 3

2

你用clearInterval()错了。您正在向它传递一个函数参数,而它需要一个对象。

// correct usage
var time = setInterval(stuff, 100);
clearInterval(time);
于 2013-03-12T18:53:14.827 回答
0

当您想在语句中测试事物是否“相等”时if,您需要使用==or===和 NOT=

if (document.getElementById("crankshaft").style.marginLeft = "900px") // WRONG
if (document.getElementById("crankshaft").style.marginLeft == "900px") // RIGHT
if (document.getElementById("crankshaft").style.marginLeft === "900px") // BETTER

阅读以下问题的答案以了解和之间的==区别===

JavaScript 中 == 和 === 的区别

希望这可以帮助

于 2013-03-12T19:08:56.217 回答
0

在 else 之前有一个分号。;这是一个语法错误,删除它。你在奇怪的地方也有很多,我建议你不要把它们放在函数声明之后,如果块 if/else 块,循环块等。

于 2013-03-12T18:57:09.887 回答