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

标签 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>

最佳答案

您的代码包含三个错误:

  1. lightchange 应该是一个全局变量,因此您需要在函数上方声明它(就像使用 imgarray 一样):

    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(){
    
  2. if(lightchange=3){ 应为 if(lightchange == 3) {。使用 = 进行赋值,使用 == 进行相等性检查。

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

总之,这应该有效:

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";

// Changed: lightchange is now global
var lightchange = 1;

function fnnextimage() {
    lightchange = lightchange + 1;

    // Changed: compare to 3 instead of assigning 3
    if(lightchange == 3){
        lightchange = 1;
    }

    // Changed: Use correct array index
    document.getElementById('red').src = imgarray[lightchange - 1];
}

关于javascript - 这个交通灯 JavaScript 代码有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34653900/

相关文章:

javascript - Angular js单元测试mock文档

javascript - 为 C3.js 格式化 JSON

javascript - Webpack postcss-loader 在传递函数时不工作

javascript - 将第一个 observable 的结果传递给 switchMap 中的 observable

用于检查字符串中至少 3 个插入符号的 Javascript 正则表达式

javascript - 递归、西格玛表示法 (html/javascript)

javascript - 网页包 5 : Image src in html when using contentHash

javascript - 由渲染更新的 ReactJS Cortex 对象未调用?

javascript - Jquery Datepicker 从当前月份中删除上个月或下个月的天数

javascript - 如何在不启动任何 Jasmine 测试的情况下运行 Karma 服务器