document.body.appendChild(ⅰ)

时间:2011-03-24 13:14:09

标签: javascript javascript-events internet-explorer-7

我只在IE7中收到错误,因为document.body为null,我在调试Microsoft脚本编辑器时遇到以下错误: 即

  

document.body.appendChild(I)   代码:

function nm_eraseCookie(name){
    nm_createCookie(name,"",-1)
}
var i=document.createElement('IMG');
i.src='//e.netmng.com/pixel/?aid=403';
i.width=1;
i.height=1;
document.body.appendChild(i);
nm_createCookie('nm_belgacom_bt',
escape('tv1=bun_intvtel;tv2=;tv3=;phone1=hbs_discoveryline;phone2=hbs_classical_line;phone3=;inet1=bun_nettvmob;inet2=hbs_adsl_res_plus;inet3=hbs_adsl_res_go;nm_banner=;nm_popin=hbs_discoveryline;'),183);

你可以告诉我我需要做些什么来解决这个问题。

6 个答案:

答案 0 :(得分:54)

你可以尝试

document.getElementsByTagName('body')[0].appendChild(i);

如果代码在<head>中运行,并且在之前运行,那么对于浏览器甚至看不到<body>,这对您没有任何帮助。如果您不想使用“onload”处理程序,请尝试将<script>块移到文档的最末端而不是<head>

答案 1 :(得分:16)

它正在发挥作用。只需修改为空检查:

  

if(document.body!= null){             document.body.appendChild(元件);         }

Pointy的建议很好;它可能有用,但我没试过。

答案 2 :(得分:2)

您可以appendChilddocument.body,但如果尚未加载文档,则不能。所以你应该 将所有内容放入:

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

这可行,或者您可以使appendChild依赖于其他事件,例如另一个事件。

https://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_doc_body_append

事实上,您可以尝试更改innerHTML中的document.body,......

答案 3 :(得分:1)

在2019年,您可以使用querySelector。

大多数浏览器(https://caniuse.com/#search=querySelector)支持它

document.querySelector('body').appendChild(i);

答案 4 :(得分:0)

可能还想使用“ documentElement”:

var elem = document.createElement("div");
elem.style = "width:100px;height:100px;position:relative;background:#FF0000;";
document.documentElement.appendChild(elem);

答案 5 :(得分:0)

如果您的脚本位于html文件的head标签内,请尝试将其放在body标签内。 当脚本位于head标签内时,CreateElement将为您提供空警告

<head>
  <title></title>
</head>

<body>
  <h1>Game</h1>
  <script type="text/javascript" src="script.js"></script>
</body>