这个交通灯javascript代码有什么问题?

时间:2016-01-07 11:23:34

标签: javascript

此代码用于在图片(交通灯)之间切换,然后再次返回到开始状态。第一张图片工作正常,但其他图片不会出现。

<head>
<img id="red" src="A452 Images/red light.png" width="255" height="300" />
<button onclick="fnnextimage()">change image</button> 
</head>

<body>
<script>
var imgarray=[];

imgarray[0].src = "A452 Images/red traffic light.png";
imgarray[1].src = "A452 Images/yellow traffic light.png";
imgarray[2].src = "A452 Images/green traffic light.png";

function fnnextimage(){

    var lightchange = 1;

    lightchange = lightchange+1;

    if(lightchange=3){
        lightchange=1};

    document.getElementById('red').src=imgarray[fnnextimage]
}
</script>
</body>
</html>

3 个答案:

答案 0 :(得分:3)

您的代码包含三个错误:

  1. map.get(Apple.class) == map.get(GreenApple.class); 应该是一个全局变量,因此您需要在函数上方声明它(与lightchange一样):

    imgarray
  2. var imgarray=[]; imgarray[0].src = "A452 Images/red traffic light.png"; imgarray[1].src = "A452 Images/yellow traffic light.png"; imgarray[2].src = "A452 Images/green traffic light.png"; var lightchange = 1; function fnnextimage(){ 应为if(lightchange=3){。使用if(lightchange == 3) {进行分配,使用=进行相等检查。

  3. 您不能将函数用作数组索引:==应为imgarray[fnnextimage](数组索引从零开始)。

  4. 总之,这应该有效:

    imgarray[lightchange - 1]

答案 1 :(得分:0)

问题是wamp ---www ---my_project ---assets --- js ---uploads ---tinymce不是全局变量。要解决此问题,请执行以下操作:

var lightchange

答案 2 :(得分:0)

fnnextimage函数中,lightchange首先设置为1,然后递增(至2)。每次执行该函数时,其值都会相同。

提示:如果某个功能没有达到您的预期效果,console.log(variableName)可以快速查看variableName在任何指定时间内的内容。[&#39;}比在SO上询问问题更快的调试方式。

当代码尝试比较if(lightchange=3)时,它实际上设置值,而不是评估值。 Use == in conditionals.

imgarray[fnnextimage]正在尝试使用不存在的变量fnnextimage访问索引 - 这是一个函数名,而不是变量名。