我有以下JavaScript。
<html>
<head>
<script language="JavaScript">
function fdivisible()
{
document.write("<h1> Just a javascript demo</h1>");
var x=document.forms["aaa"]["txt1"].value;
alert(x);
}
</script>
</head>
<body>
<form action="#" name="aaa">
Enter a no. : <input type="text" name="txt1" id="txt1" />
<input type="button" value="Click" onclick="fdivisible();">
</form>
</body>
</html>
问题是,JS函数的第一行正在执行,其余部分被忽略。如果我注释掉第一行,则执行其余代码。任何人都可以向我解释为什么会这样吗?
答案 0 :(得分:7)
因为调用document.write
隐含式调用document.open
,它会清除调用它的文档:
如果目标中存在文档,则此方法将其清除
在调用document.write
之后,您尝试获取引用的元素不再存在于DOM中,并且会引发错误。如果您查看错误控制台,它应该是以下内容:
TypeError: Cannot read property 'txt1' of undefined
答案 1 :(得分:6)
document.write
只能在初始加载文档时使用。
如果要在调用函数时插入H1,可以替换
document.write("<h1> Just a javascript demo</h1>");
与
var h1 = document.createElement('h1');
h1.innerHTML = " Just a javascript demo";
document.body.appendChild(h1);
答案 2 :(得分:4)
document.write(content)在文档流上写入内容。
您必须在写入文档后关闭流才能继续加载页面
document.write("hello");
document.close();
答案 3 :(得分:1)
除了销毁答案外,您还可以将document.write
替换为:
document.body.innerHTML += '<h1>Javascript demo</h1>
答案 4 :(得分:1)
您正在使用document.write调用销毁DOM。在某些浏览器中,这也会破坏全局变量。
改为使用:
var element = document.createElement('h1');
element.appendChild(document.createTextNode('text'));
document.body.appendChild(element);
答案 5 :(得分:0)
在所有JS语句的末尾使用document.write()
。 script
元素永远不会在它之后执行。
答案 6 :(得分:0)
试试这个:
var x=document.getElementById(txt1).value;
alert(x);
答案 7 :(得分:0)
您可以使用
写入文档 document.write("<h1> Just a javascript demo</h1>");
只有一次它适用于整个文件。如果你想放置你将不得不添加一个类/ ID,然后将文本放在该类/ id。