2016-04-30 71 views
0

ここで私はJavascriptファイルを持っています - コードはかなり面倒ですが、私はいくつかの基本的な機能をコーディングしていますが、コードをクリーンアップしません。ページには3つのセクションがあり、その中には3つのセクションがあります。写真は30秒ごとに変わるはずです。このエラーの原因は何ですか?このエラーの解決方法を教えてください。

コンソールに出力エラー:例外TypeError:未定義のオブジェクトでない

( '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に悪いですが、答えは –

答えて

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

彼は 'meridian =" AM ";'と 'setTimeout()'の代わりに 'meridian ==" AM ";'を使用しました。 – DININDU

+0

@ DININDU助けてくれてありがとう! – codenewb

1

ヨは、いくつかのタイプミスとミスを持っている:

meridian == "AM"; 

meridian = "AM";

また

timerId = setTimeout("startAnimation()", 30000); 
なければなりません

する必要があります:

setTimeout(startAnimation, 30000); 
+0

'setTimeout()'に文字列を渡すことは有効です。お勧めはしませんが、コードを変更する必要はありません。 – nnnnnn

+0

@MaxKroshkaありがとう!私はそれを修正しました! – codenewb

関連する問題