0

クライアント側のプログラミングを学習しようとしているときに、別のツールチップを実装していspanますdiv.

適切な方法は何ですか?

html

<p id="TargetP">some initial text</p>
<br />
<input type="button" id="turnOn" value="hit it">

JavaScript

var texts = [];

texts.push("text one");
texts.push("text two");

$('#turnOn').on("click", function() {
    myTimer();
});

function myTimer() {
    var m = 0;
    for (i = 0; i < 10; i++) {
        m = (i % 2);
       setTimeOut(function() {
            alternateTT(m)
        }, 1000);
    }
}

function alternateTT(itemNo) {
    var target = $('#TargetP');

    $(target).text(texts[itemNo]);

}
4

1 に答える 1

0

コードのこの部分は、期待どおりに機能しません。

for (i = 0; i < 10; i++) {

  m = (i % 2);
  setTimeOut(function() {
    alternateTT(m)
  }, 1000);

}

タイムアウト関数が呼び出されるまでに、最終ループのコンテキストになります。したがって、すべての呼び出しmで等しくなります。10 % 2

timeOut 関数に明示的な変数を渡したい場合は、次のようにします。

var param = 1;
setTimeOut(function(param) {
  alternateTT(param)
}, 1000, param);
于 2013-01-01T20:35:47.313 に答える