为什么javascript程序会返回null?它应该返回objectHTMLunknwonelement
<html>
<head>
</head>
<body>
<script type="text/javascript">
function mySignature()
{
document.write("samir imtiaz<br/>");
document.write("www.fb.com/samir.imtiaz37");
var k=document.getElementById("para2");
alert(k);
}
<script>
mySignature();
</script>
<h2> it is head 2</h2>
<p id="para1" onmousemove="effect()" onmouseout="effectback()">
this is my first paragraph
</p>
<p1 id="para2">it is paragraph </p1>
<button onclick="mySignature()"> my sign </button>
</body>
</html>
点击时的预期输出&#34;我的标志&#34; button:objectHTMLunknwonelement
我观察到的输出:null
<html>
<head>
</head>
<body>
<script type="text/javascript">
function mySignature()
{
var k=document.getElementById("para2");
alert(k);
}
<script>
mySignature();
</script>
<h2> it is head 2</h2>
<p id="para1" onmousemove="effect()" onmouseout="effectback()">
this is my first paragraph
</p>
<p1 id="para2">it is paragraph </p1>
<button onclick="mySignature()"> my sign </button>
</body>
</html>
点击时的预期输出&#34;我的标志&#34; button:objectHTMLunknwonelement
我观察到的输出:objectHTMlunknownelement
答案 0 :(得分:1)
注意:当document.write写入文档流时,在已关闭(加载)的文档上调用document.write会自动调用document.open,这将清除文档。
在调用document.getElementById之前,您正在替换文档DOM,因此,元素para2
不存在。
function mySignature() {
var k = document.getElementById("para2");
alert(k);
document.write("samir imtiaz<br/>");
document.write("www.fb.com/samir.imtiaz37");
}
<h2> it is head 2</h2>
<p id="para1">
this is my first paragraph
</p>
<p1 id="para2">it is paragraph </p1>
<button onclick="mySignature()"> my sign </button>
答案 1 :(得分:0)
第一次警报显示null
,因为代码运行时该元素不存在。它在元素创建之前运行。加载页面并单击按钮后,每个示例案例的行为为:
在第一个示例中,方法中的document.write(..
行正在用您正在编写的元素替换dom,因此&#34; p1&#34;元素被覆盖,因此getElementById
返回null。注意警告后段落如何消失。
在第二个示例中,对象未被覆盖,但它是未知的标记类型,因此您预期的输出是预期的。