0

在尝试学习一些客户端编程时,我正在实现一个备用工具提示,在 aspandiv,我在使用 java 脚本 for-loop 进行切换时遇到了一点问题

什么是正确的方法?

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 回答