JavaScript:如何使If语句完成两件事
下面是一段代码的摘录:JavaScript:如何使If语句完成两件事,javascript,Javascript,下面是一段代码的摘录: if (lightColour === fileArray[0]) { lightColour = "RedOrangeLight.jpg"; lightTimer = "5000"; } 假设LightColor等于fileArray[0],我可以对代码做什么,以便LightColor等于redorRangeLight.jpg,并且lightTimer也被赋值为5000 -编辑- 好吧,很明显,这不是很有用或有用。我将在下面发布我的完整代码: <!D
if (lightColour === fileArray[0]) {
lightColour = "RedOrangeLight.jpg";
lightTimer = "5000";
}
假设LightColor等于fileArray[0],我可以对代码做什么,以便LightColor等于redorRangeLight.jpg,并且lightTimer也被赋值为5000
-编辑-
好吧,很明显,这不是很有用或有用。我将在下面发布我的完整代码:
<!DOCTYPE html>
<html>
<body>
<h1>Changing Traffic Lights w/ Arrays</h1>
<img id="trafficLight" src="RedLight.jpg">
<script>
var lightTimer = "1000"
var lightColour = trafficLight.src
var fileArray = ["RedLight.jpg",
"RedOrangeLight.jpg",
"GreenLight.jpg",
"OrangeLight.jpg"];
function lightChange() {
if (lightColour === fileArray[0]) {
lightColour = "RedOrangeLight.jpg";
lightTimer = 5000;
} else if (lightColour === fileArray[1]) {
lightColour = "GreenLight.jpg";
lightTimer = 1000;
} else if (lightColour === fileArray[2]) {
lightColour = "OrangeLight.jpg";
lightTimer = 5000;
} else {
lightColour = "RedLight.jpg";
lightTimer = 1000;
}
var light = document.getElementById('trafficLight');
light.src = lightColour
}
setInterval(lightChange, lightTimer);
</script>
</body>
</html>
任何关于我做错了什么的指示?如果您想要5000的值,请删除它周围的引号。如果将变量设置为5000,则该变量将是字符串而不是数字。删除引号将使其成为一个数字 代码应该是这样的 lightTimer=5000 相当于 lightTimer=5000 您只定义了一次setInterval超时-在函数之外。这就是为什么它不会用新的if/else值更新 解决方案: 在函数中使用setTimeout更新超时值: var light=document.getElementById'trafficLight';//把它放在这里!! var-lightTimer=1000; var lightcolor=trafficLight.src; var fileArray=[ //placehold.it/50x50/f00,//红色 //placehold.it/50x50/f40,//redorange //placehold.it/50x50/3f0,//绿色 //placehold.it/50x50/f80//橙色 ]; 功能光变{ 如果LightColor===fileArray[0]{ LightColor=//placehold.it/50x50/f40;//redorange lightTimer=1000; }如果LightColor==fileArray[1],则为else{ LightColor=//placehold.it/50x50/3f0;//绿色 lightTimer=5000; }如果LightColor==fileArray[2],则为else{ LightColor=//placehold.it/50x50/f80;//橙色 lightTimer=1000; }否则{ LightColor=//placehold.it/50x50/f00;//红色 lightTimer=5000; } light.src=lightcolor //改为在此处使用setTimeout setTimeoutlightChange,lightTimer; } lightChange;//开始 更换带有阵列的交通灯
好没错,你的代码有什么不起作用的?这似乎是对的哦对。。。所以我正确地完成了这部分代码?你能解释一下5000作为字符串到底有什么错吗?如果你想让它成为一个字符串,这很好,但是如果它只是一个数字,如果它是一个值,那么变量可以更容易地操作。从声音上看,5000不起作用。setInterval可以将超时参数4000识别为ms,因此它根本不重要。