2016-04-30 60 views
0

这里我有一个Javascript文件 - 我知道现在的代码非常混乱,但我只是编写了一些基本的功能,而不是,然后我将清理代码。该页面在这三个单独的部分中有三个部分是图片。照片应该每30秒更换一次。什么导致了这个错误?这个错误的解决方案是什么?

打印到控制台的错误:类型错误:未定义不是(评价 'document.images [1]的.src =图像[备用]')

下面的代码的对象:

var alternate = 0; 
var timerId; 
var images = ["img/s1.jpg", "img/tourism.jpg", "img/s2.jpg", "img/shopping.jpg", "img/dining.jpg", "img/shopping2.jpg", "img/s3.jpg"]; // Image URLs in a image array 

function startAnimation() { 

    var now = new Date(); 
    var hours = now.getHours(); 
    var minutes = now.getMinutes(); 
    var seconds = now.getSeconds(); 
    var meridian = "AM"; 
    var time = hours + ":" + minutes + ":" + seconds + " " + meridian; 

    if (hours < 12 && meridian == "PM" || hours == 0) { 
     hours = hours + 12; 
     meridian == "AM"; 
     time = hours + ":" + minutes + ":" + seconds + " " + meridian; 
    } else if (hours > 12 && meridian == "AM") { 
     meridian = "PM"; 
     hours = hours - 12; 
     time = hours + ":" + minutes + ":" + seconds + " " + meridian; 
    } 
    //hours < 12 ? meridian : "AM"; 

    // comment on code here. 
    if (minutes < 10) { 
     minutes = "0" + minutes; 
     time = hours + ":" + minutes + ":" + seconds + " " + meridian; 
    } 

    // comment on code here. 
    if (seconds < 10) { 
     seconds = "0" + seconds; 
     time = hours + ":" + minutes + ":" + seconds + " " + meridian; 
    } 

    //alternate = (alternate == 0) ? 1 : 0; // Alternate images 

    if (alternate == 0) { 
     alternate = 3; 
    } else { 
     alternate = 0; 
    } 

    if (alternate == 1) { 
     alternate = 2; 
    } else { 
     alternate = 1; 
    } 

    //document.images[0].src = images[alternate]; // Update image 
    document.images[1].src = images[alternate]; 
    timerId = setTimeout("startAnimation()", 30000); // 30 second update 

    if (images[alternate] == images[0]) { 
     console.log(time + " " + images[0] + " has been loaded."); 
    } 

    if (images[alternate] == images[3]) { 
     console.log(time + " " + images[3] + " has been loaded."); 
    } 

    if (images[alternate] != images[0] || images[alternate] != images[3]) { 
     console.log("Please wait while the debugging process is in effect."); 
    } 

} 

startAnimation(); 
+0

我的直觉说'document.images [1]'是错误的。虽然我对JS和DOM IDK不好,但答案是什么 – 2016-04-30 03:55:27

回答

0

这是工作代码。发生错误:错误的setTimeout()实现和您使用的错误赋值运算符。

var alternate = 0; 
 
var timerId; 
 
var images = [ 
 
    "img/s1.jpg", 
 
    "img/tourism.jpg", 
 
    "img/s2.jpg", 
 
    "img/shopping.jpg", 
 
    "img/dining.jpg", 
 
    "img/shopping2.jpg", 
 
    "img/s3.jpg" 
 
]; // Image URLs in a image array 
 

 
function startAnimation() { 
 

 
    var now = new Date(); 
 
    var hours = now.getHours(); 
 
    var minutes = now.getMinutes(); 
 
    var seconds = now.getSeconds(); 
 
    var meridian = "AM"; 
 
    var time = hours + ":" + minutes + ":" + seconds + " " + meridian; 
 

 
    if (hours < 12 && meridian == "PM" || hours === 0) { 
 
    hours = hours + 12; 
 
    meridian = "AM"; 
 
    time = hours + ":" + minutes + ":" + seconds + " " + meridian; 
 
    } else if (hours > 12 && meridian == "AM") { 
 
    meridian = "PM"; 
 
    hours = hours - 12; 
 
    time = hours + ":" + minutes + ":" + seconds + " " + meridian; 
 
    } 
 
    //hours < 12 ? meridian : "AM"; 
 

 
    // comment on code here. 
 
    if (minutes < 10) { 
 
    minutes = "0" + minutes; 
 
    time = hours + ":" + minutes + ":" + seconds + " " + meridian; 
 
    } 
 

 
    // comment on code here. 
 
    if (seconds < 10) { 
 
    seconds = "0" + seconds; 
 
    time = hours + ":" + minutes + ":" + seconds + " " + meridian; 
 
    } 
 

 
    //alternate = (alternate == 0) ? 1 : 0; // Alternate images 
 

 
    if (alternate === 0) { 
 
    alternate = 3; 
 
    } else { 
 
    alternate = 0; 
 
    } 
 

 
    if (alternate == 1) { 
 
    alternate = 2; 
 
    } else { 
 
    alternate = 1; 
 
    } 
 

 
    //document.images[0].src = images[alternate]; // Update image 
 
    document.images[0].src = images[alternate]; 
 
    timerId = setTimeout(startAnimation(), 30000); // 30 second update 
 

 
    if (images[alternate] == images[0]) { 
 
    console.log(time + " " + images[0] + " has been loaded."); 
 
    } 
 

 
    if (images[alternate] == images[3]) { 
 
    console.log(time + " " + images[3] + " has been loaded."); 
 
    } 
 

 
    if (images[alternate] != images[0] || images[alternate] != images[3]) { 
 
    console.log("Please wait while the debugging process is in effect."); 
 
    } 
 

 
} 
 

 
startAnimation();
<img src="" alt="">

+2

我们必须发挥“发现差异”的作用吗?原始代码有什么问题? – nnnnnn

+0

他被使用过,经络==“AM”;而不是'子午线=“AM”;'和无效的'setTimeout()'。 – DININDU

+0

@ DININDU感谢您的协助! – codenewb

1

育有几个错别字和错误:

meridian == "AM"; 

必须meridian = "AM";

而且

timerId = setTimeout("startAnimation()", 30000); 

必须是:

setTimeout(startAnimation, 30000); 
+0

将一个字符串传递给'setTimeout()'是有效的。不建议这样做,但不必改变它以使代码正常工作。 – nnnnnn

+0

@MaxKroshka谢谢!我纠正了这一点! – codenewb

相关问题