Javascript Internet Explorer 7+返回错误“预期对象”,但其他浏览器都不会返回
每次我在InternetExplorer7或更高版本中加载页面时,调用下面的函数时都会得到预期的错误对象。脚本显示在页面底部结束标记之前。没有具有相同名称或id的元素 HTML代码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
<!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="© 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>