Javascript Internet Explorer 7+返回错误“预期对象”,但其他浏览器都不会返回

Javascript Internet Explorer 7+返回错误“预期对象”,但其他浏览器都不会返回,javascript,internet-explorer,internet-explorer-7,Javascript,Internet Explorer,Internet Explorer 7,每次我在InternetExplorer7或更高版本中加载页面时,调用下面的函数时都会得到预期的错误对象。脚本显示在页面底部结束标记之前。没有具有相同名称或id的元素 HTML代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict/EN" "http://www.w3.org/TR/xhtml1/DTD/xhtm1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml

每次我在InternetExplorer7或更高版本中加载页面时,调用下面的函数时都会得到预期的错误对象。脚本显示在页面底部结束标记之前。没有具有相同名称或id的元素

HTML代码

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict/EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtm1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <meta http-equiv="content-type" content="text/html; charset="UTF-8" />
    <meta http-equiv="content-language" content="en-us" />
    <meta name="keywords" content="" />
    <meta name="description" content="" />
    <meta name="author" content="" />
    <meta name="copyright" content="&copy; 2012" />

    <title>takeover</title>

    <base href="" />
    <link rel="stylesheet" href="" />

    <style type="text/css" media="all" />

    #container {
         position:absolute;
         text-align:center;
         background-color:#fff;
         z-index:9999;
    }

    </style>

    <script type="text/javascript" src="takeover.js"></script>
</head>
<body>
    <div>
        <div id="container"></div>
        <p><a href="#">qwe</a></p>
    </div>

<script type="text/javascript">
     window.onload = show;
</script>
</body>
</html>
这条线

window.onload = show();
应该是这个

window.onload = show;
…因为您需要将show函数本身分配给window.onload,而不是调用它的返回值。

这一行

window.onload = show();
应该是这个

window.onload = show;
…因为您需要将show函数本身分配给window.onload,而不是调用它时的返回值。

将引用容器的块移动到定义容器后的某个点:

<!DOCTYPE HTML>
<HTML>
<HEAD>
</HEAD>
<BODY>
    <DIV id="container"></DIV>
<script type="text/javascript">
     window.onload = show;

    function show() {
        obj1 = document.getElementById("container").innerHTML =  '<div style="width: 960px; height: 2000px;"><p>Hello World.<br>Here I am.</p>' +
                                 '<p><a href="#" onclick="hide();">test</a></p></div>';

}
</script>

</BODY>
</HTML>
例如,如果块位于内部,则Internet Explorer会给出错误:

SCRIPT5007:无法设置属性“innerHTML”的值:对象为null或未定义

页面加载时。

将引用容器的块移动到定义容器后的某个点:

<!DOCTYPE HTML>
<HTML>
<HEAD>
</HEAD>
<BODY>
    <DIV id="container"></DIV>
<script type="text/javascript">
     window.onload = show;

    function show() {
        obj1 = document.getElementById("container").innerHTML =  '<div style="width: 960px; height: 2000px;"><p>Hello World.<br>Here I am.</p>' +
                                 '<p><a href="#" onclick="hide();">test</a></p></div>';

}
</script>

</BODY>
</HTML>
例如,如果块位于内部,则Internet Explorer会给出错误:

SCRIPT5007:无法设置属性“innerHTML”的值:对象为null或未定义


页面加载。

@Derek-这也没什么区别。为什么不尝试使用window.onload=show。。。然后在show函数中,只需输入一个警报。保持HTML的原始顺序,看看它能做什么。它是否会给出错误或弹出警报?没有理由将函数声明为window.functionName。@Derek-这也没什么区别。为什么不尝试使用window.onload=show。。。然后在show函数中,只需输入一个警报。保持HTML的原始顺序,看看它能做什么。它是否会给出错误或弹出警报?没有理由将函数声明为window.functionName。如果函数被分配给window.onload,则它将在加载页面后运行,因此可以将其放在标题中。如果函数被分配给window.onload,则它将在加载页面后运行,所以把它放在头上没关系。@Derek:那有点不同。您没有使用函数声明,因此顺序很重要。OP有一个函数声明,所以顺序无关紧要,除非它们在不同的脚本中@我不是吗?这是表演功能的一部分element@PeanutsMonkey:在窗口之前有alertshow.show=func。。。分配去掉那个。这打破了剧本。同时从函数定义中删除show和hide,例如:window.show=function{而不是window.show=function show{。这可能会导致IE中出现奇怪的问题。IE是我处理过的最令人沮丧的事情。添加/显示36条评论…也许我们应该在聊天中继续?@Derek:这有点不同。你没有使用函数声明,所以顺序很重要。OP有函数声明,所以顺序不重要,除非它们在d中不同的脚本。@am not i am-它作为脚本的一部分在show函数中element@PeanutsMonkey:在window.show=func…赋值之前有alertshow。删除它。这会破坏脚本。同时删除函数定义中的show和hide,例如:window.show=function{而不是window.show=function show{。这可能会导致IE中出现奇怪的问题。IE是我处理过的最令人沮丧的事情。添加/显示36条评论…也许我们应该在聊天中继续?
<!DOCTYPE HTML>
<HTML>
<HEAD>
</HEAD>
<BODY>
    <DIV id="container"></DIV>
<script type="text/javascript">
     window.onload = show;

    function show() {
        obj1 = document.getElementById("container").innerHTML =  '<div style="width: 960px; height: 2000px;"><p>Hello World.<br>Here I am.</p>' +
                                 '<p><a href="#" onclick="hide();">test</a></p></div>';

}
</script>

</BODY>
</HTML>