-2

setTimer()を使用して、divに背景画像を設定して1〜2秒ごとに変更しようとしています。私はそれを設定し、それは私が持っていると言っています

  'Invalid left-hand side in assignment'

私が何をしているのかわからない、それは間違っている。誰か助けてもらえますか?

  <html><body>
  <div class="box">
   <div id="b1"></div>
  </div>
  <input id = 'spin' type="button" value="Spin" onclick='changeIcons()' />
  <script>
  var arr = new Array();
  arr[0] = '1.png';
  arr[1] = '2.png';
  arr[2] = '3.png';
  var first = document.getElementById('b1');

  function changeIcons(){
   for(var spinIcons= 0; spinIcons < 10; spinIcons++){
   arr.sort(function() {return 0.5 - Math.random()});
   var v1 = setTimeout(function(){first.style.background-image= 'url(arr[0])'},   1000);
}
  }
 </script> 
 </body>
 </html>

これは最終的に機能するようになりました。タイミングの問題があり、背景画像用のフレーム付きプレースホルダーを作成する必要がありますが、機能しています。

     <div class="first"></div>
     <script>
     for(var i=0; i<11; i++){
        $("div.first").slideUp(300).delay(100).fadeIn(400);
     }
     </script>

私をまっすぐに設定してくれたTJCROWDERに感謝します!!!

4

1 に答える 1

3

2つの問題があります。

あなたが言及したエラーの原因はここにあります:

//                                        here ------v
var v1 = setTimeout(function(){first.style.background-image= 'url(arr[0])'},   1000);

これにより、エンジンは、式()の結果に代入しようとしていると見なします。background - imageこれは、代入の左側では無効です。JavaScriptでは、プロパティ名にダッシュを含めることはできません。代わりに、キャメルケースバージョンを使用できますbackgroundImage

これとは別に、文字列'url(arr[0])'に値を入れるのではなく、常に背景画像を文字列に設定しarr[0]ます。見積もりを調整する必要があります。

それで:

var v1 = setTimeout(function(){first.style.backgroundImage= "url(" + arr[0] + ")"},   1000);

その他の注意事項:

  • をループで設定しているsetTimeoutので、これを10回実行するようにスケジュールします。しかし、これらの10回はすべて、次々と1秒後に発生し、まったく同じことを実行します。背景画像をarr[0] その時点での画像に設定します。以前に配列の順序を10回変更したという事実は、関数がスケジュールarr[0]した時点での値のコピーを受け取らないため、配列への永続的な参照を受け取るため、違いはありません。実行時。詳細:閉鎖は複雑ではありません

  • 配列をソートしてインデックス0を使用することは、配列からランダムに選択するためのかなり非効率的な方法のようです。

于 2012-11-24T07:57:06.153 に答える