IE错误:无法设置属性'innerHTML'的值:object为null或undefined

时间:2012-01-08 22:27:54

标签: internet-explorer innerhtml

这个简单的代码(进度条)在IE以外的任何地方都可以正常工作(试过9和8):

      <!-- Progress bar holder -->
      <div id="progress" style="width:500px;border:1px solid #eee;"></div>
      <!-- Progress information -->
      <div id="information" style="width"></div>

      <?php

      // Total processes
      $total = 10;

      // Loop through process
      for($i=1; $i<=$total; $i++){
      // Calculate the percentation
      $percent = intval($i/$total * 100)."%";

     // Javascript for updating the progress bar and information
     echo '<script language="javascript">
     document.getElementById("progress").innerHTML="<div style=\"width:'.$percent.';   background-color:#ddd;\">&nbsp;</div>";
document.getElementById("information").innerHTML="'.$i.' row(s) processed.";
</script>';

// This is for the buffer achieve the minimum size in order to flush data
echo str_repeat(' ',1024*64);

// Send output to browser immediately
flush();

// Sleep one second so we can see the delay
sleep(1);
}

// Tell user that the process is completed
echo '<script language="javascript">document.getElementById("information").innerHTML="Process completed"</script>';

 ?>

IE显示错误“无法设置属性'innerHTML'的值:对象为null或未定义”。 问题似乎在这里:

    document.getElementById("progress").innerHTML="<div style=\"width:'.$percent.';background-color:#ddd;\">&nbsp;</div>";
在这种情况下,
div在IE中无法正常工作(至少据我所知)

试图自己修理它,但对我来说太复杂了。任何帮助都感激不尽。 谢谢)

2 个答案:

答案 0 :(得分:1)

该文档可能尚未加载。

window.onload = function() {
    // your code
}

或者我总是使用jQuery

$(function () {
    // your code
});

答案 1 :(得分:0)

解决方案最有可能确保您的文档具有正确的结构。

这不起作用:

<div id="content"></div>
<script>
document.getElementById('content').innerHTML="HELLO WORLD";
</script>

这确实有效:

<!DOCTYPE html>
<html>
    <head>
    </head>
    <body>
    <div id="content"></div>
    <script>
    document.getElementById('content').innerHTML="HELLO WORLD";
    </script>
    </body>
</html>