-3

わかりましたので、カウンターが最大カウントに達した場合、最初からやり直します。デフォルトのカウンター番号は 0 です。ここに私のコードがあります。

var picCount = 0; // global
 var maxCount = 4;
 //Pictures, to add more then 4 pics, add var picFive = "link to image here", var picSix ="bla", you get it.. add in picArray ,picFive and ,picSix
 //To change the time delay, change it at the body onload and on the setTimeout
 var picOne = "http://screenshots.nl.sftcdn.net/nl/scrn/3342000/3342167/modloader-for-minecraft-02-700x406.jpg"
 var picTwo = "http://media.moddb.com/images/downloads/1/31/30912/minecraft_blox.png"
 var picThree = "http://www.mupload.nl/img/rl6zeofbb.png"
 var picFour = "http://www.mupload.nl/img/rl6zeofbb.png"

 var picArray = [picOne, picTwo, picThree, picFour]

 //  
 // gets next picture in array
     function nextPic() { // check if adding 1 exceeds number of pics in array
         if (picCount.length < maxCount.length) {
             picCount = (picCount + 1 < picArray.length) ? picCount + 1 : 5000;
             // build the image to write to page using the new pic reference
             var build = '<img border="0" src="' + picArray[picCount] + '" width="649">\n';
             document.getElementById("imgHolder").innerHTML = build;
             // repeat this every    10 seconds. 
             setTimeout('nextPic()', 10 * 1000) //setTimeout is here
         } else {
             picCount = (picCount - maxCount < picArray.length) ? picCount + 1 : 5000;
             // build the image to write to page using the new pic reference
             var build = '<img border="0" src="' + picArray[picCount] + '" width="649">\n';
             document.getElementById("imgHolder").innerHTML = build;
             // repeat this every    10 seconds. 
             setTimeout('nextPic()', 10 * 1000) //setTimeout is here
         }
     }

わかりましたので、皆さんがこれで私を助けてくれることを願っています..

4

3 に答える 3

0
var currentPic = 0;
var picArray= ["http://screenshots.nl.sftcdn.net/nl/scrn/3342000/3342167/modloader-for-minecraft-02-700x406.jpg",
               "http://media.moddb.com/images/downloads/1/31/30912/minecraft_blox.png",
               "http://www.mupload.nl/img/rl6zeofbb.png",
               "http://www.mupload.nl/img/rl6zeofbb.png"];

function nextPic()  {
    (currentPic < picArray.length) ? currentPic++ : currentPic = 0;
    var build='<img border="0" src="'+picArray[currentPic]+'" width="649">';
    document.getElementById("imgHolder").innerHTML=build;
}

setTimeout('nextPic()',10 * 1000);

コードをよりクリーンにするために、いくつかの変更を加えました。いくつかのヒント:

  • 画像の URL を配列に入れる前に vars に保存する必要はありません。それらを使用して配列を初期化するだけです。
  • 繰り返さないでください。複数の場所でまったく同じコードを使用していることに気付いた場合は、おそらく、問題へのアプローチ方法を再考する必要があります。
  • 「三項演算子」を調べてください。私の意見では、単純な条件ステートメントが読みやすくなります。
  • maxCount を使用する必要はありません。最大カウントは picArray の長さになります。
  • 通常は必要ありませんが、すべてのステートメントをセミコロンで終了するようにしてください。
  • 一部の人々のエリート主義的な態度を気にする必要はありませんが、同時に、質問をする前にできる限り調査するようにしてください。
于 2013-02-22T15:20:41.317 に答える
0

それはたくさんの厄介なコードです。実装に対する私の修正は、おそらく次のようになります。

var currentPic = 0;
var picOne = "http://screenshots.nl.sftcdn.net/nl/scrn/3342000/3342167/modloader-for-minecraft-02-700x406.jpg"
var picTwo = "http://media.moddb.com/images/downloads/1/31/30912/minecraft_blox.png"
var picThree = "http://www.mupload.nl/img/rl6zeofbb.png"
var picFour = "http://www.mupload.nl/img/rl6zeofbb.png"

var picArray= [picOne,picTwo,picThree,picFour]

function nextPic()  {
    if (currentPic < picArray.length) {currentPic++;}
    else {currentPic = 0;}

    var build='<img border="0" src="'+picArray[currentPic]+'" width="649">';
    document.getElementById("imgHolder").innerHTML=build;
    // repeat this every    10 seconds. 
    setTimeout('nextPic()',10 * 1000)//setTimeout is here
}
于 2013-02-22T14:07:58.667 に答える
0

コードに存在すると確信している他の多くの問題にもかかわらず、この行が質問で対処された特定の問題の原因であると思います。

if (picCount.length < maxCount.length) {

maxCountそしてpicCount単なる数字です。長さのプロパティはありません。これを次のように変更します。

if (picCount < maxCount) {
于 2013-02-22T14:10:04.543 に答える