2

这是代码:

function getTime(j){
  var stopClock= new Date();
  delta[parseInt(j)]=stopClock.getMilliseconds()-start.getMilliseconds();
 }

 //REST OF THE CODE!!
function func(){
{
   for (var i = 0; i < 6; i++){
     start = new Date();
     document.write('<img src="'+URL[i]+'" width="1" height="1" alt="" onload="getTime('+i+');"/>');
    }
 }

 //SOME CODE

setTimeout(function() {
   func();
},100);

但是我收到了这个错误:getTime 没有定义

如果我这样声明 getTime :

 document.getTime= function (j)

没有错误,但它从不执行该功能。

如果我删除 setTimeout,它将毫无问题地工作。

有什么想法吗?

谢谢,

4

3 回答 3

6

您正在通过document.write调用破坏 DOM。在某些浏览器中,这也会破坏全局变量。

而不是document.write,尝试...

for (var i = 0; i < 6; i++){

    var img = document.body.appendChild(document.createElement('img'));
    img.src = URL[i];
    img.width = 1;
    img.height = 1;
    img.onload = makeHandler(i);

}

function makeHandler(i) {
    return function() {
        getTime(i);
    };
}

这是清除全局变量的简单演示...

在 Firefox 中,第二个警报将是undefined. 在 Chrome 中,全局被保留。

http://jsfiddle.net/Z9NbR/

window.foo = 'bar';

alert(window.foo); // now we have it

setTimeout(function() {
    document.write('new content');

    alert(window.foo); // now we don't
}, 100);
于 2012-04-20T02:46:25.287 回答
-2

getTime() 是 Javascript 中的预定义函数,请更改名称,它应该可以工作

于 2012-04-20T02:34:59.720 回答
-3

也尝试像这样使用 settimeout:

setTimeout('func', 100);

这在您的浏览器上效果更好吗?

于 2012-04-20T02:36:38.197 回答