<script type="text/javascript">
window.onload = function(){
var newelement = document.createElement("Button");
var textele = document.createTextNode("点击改变样式");
newelement.appendChild(textele);
newelement.onclick = test;
var ule = document.getElementById("ulelement");
ule.parentNode.appendChild(newelement);
}
</script>
如上代码是我用js创建一个按钮并插入到原来的html中,这样是成功的,但是当把onload事件去掉之后也就是
<script type="text/javascript">
var newelement = document.createElement("Button");
var textele = document.createTextNode("点击改变样式");
newelement.appendChild(textele);
newelement.onclick = test;
var ule = document.getElementById("ulelement");
ule.parentNode.appendChild(newelement);
</script>
这样就不行了,请问为什么?非常感谢~

解决方案 »

  1. 你去掉了ONLOAD。。那你也应该写个事件去触发它啊。。不然它怎么执行,什么都没有当然不执行了不知道你怎么想的。。
      

  2. 见谅见谅,刚开始学这个没几天。您的意思是<script></script>之间的内容必须都是以函数形式出现并且有事件触发才可以吗?
      

  3. 你没有给出上下文,但据我推测,你的js应该是写在head间的,把它们修改到<script>
    ...
    </script
    </body>这样的位置就可以了。因为,如果没有利用window.onload 事件,var ule = document.getElementById("ulelement");
    这个ule对象在dom中不存在,对一个null对象执行ule.parentNode方法肯定就报错了
      

  4. SCRIPT标签里的内容 FUNCTION意外的代码在不写ONLOAD的情况下
    也是可以执行的 
    但是LZ要注意你脚本代码的位置 
    页面加载编译的顺序是从上到下的
    你在上面写的话那编译到你的脚本代码时
    会由于下面的内容没有被加载而获取不到对象
    你把这些脚本代码放在下面那结果就会不一样了 
    LZ可以试试
      


  5. 可以不用函数,会顺序执行,但是你得保证执行的过程中所需要用到的对象在dom中已经存在,上面有兄弟提到过,所以要么在onload之后执行,要么放到代码最下面
      

类似问题 »