Javascript onload函数未定义

时间:2011-08-23 20:57:09

标签: javascript

以下是代码:

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

 //REST OF THE CODE!!

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

问题有时是j的某些值(例如3或5),它表示没有定义getTime! (大部分时间都很好)......

我知道它可能是因为当它到达那个onload行时它可能还没有加载getTime函数,但是getTime函数位于代码的顶部,并且许多getTime都有响应......

2 个答案:

答案 0 :(得分:2)

我不确定你要做什么(特别是使用document.write),但你可以尝试将该函数放入适当的范围,例如文档范围。


    // pass the start time in milliseconds as well
    document.getTime = function(startInMillis, j) {
        var stopClock= new Date();
        delta[j]=stopClock.getMilliseconds()-start.getMilliseconds();
    };

尝试使用下一行代码中的document.getTime()。您还看到我将start变量放在getTime()中。鉴于图像的加载时间不是同步的(虽然你的循环是),你需要确保将它传递给函数,否则你可能会得到错误的结果。

答案 1 :(得分:0)

我认为尝试向您的请求引入回调的方式不是正确的路径。听起来您可能需要使用某些jsonP或其他技术来转移到另一个解决方案来绕过相同的域策略,然后您可以附加到相应的事件。

onload甚至不是图像标记的正确事件。 onload只应在<frameset><body>标记上有效。