大家仔细看下面两段代码,代码一的window.onload = doIt()函数后面有();而代码二的window.onload = doIt函数名后面没有括号。

把两段代码分别测试后发现不带括号的window.onload在页面加载后显示了正确的效果。 我想window.onload也相当于一个触发事件,如果函数加了括号那就直接先执行函数,再加载body。而不加括号,则相当于将一个函数当作变量赋值到window.onload上,并不立即加载。

代码一:

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4.     <script>
  5.         window.onload = doIt();
  6.         function doIt() {
  7.                 var oDiv = document.getElementById("div1");
  8.             alert (oDiv);
  9.         }
  10.     </script>
  11. </head>
  12. <body>
  13.     <div id="div1"></div>
  14. </body>
  15. </html>



代码二:

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4.     <script>
  5.         window.onload = doIt;
  6.         function doIt() {
  7.                 var oDiv = document.getElementById("div1");
  8.             alert (oDiv);
  9.         }
  10.     </script>
  11. </head>
  12. <body>
  13.     <div id="div1"></div>
  14. </body>
  15. </html>