[英]How can I dynamically add a paragraph to a document without overwriting everything else in javascript?
[英]In HTML/JavaScript, how do you dynamically set a header/paragraph element's text without overwriting anything else?
当您搜索如何动态设置段落或标题元素的文本时,您会遇到几乎相同的代码行:
document.getElementById("header").innerHTML = "some text";
但这并不完全正确。 请看以下示例:
<html>
<head />
<body>
<h1 id="header" />
<p id="p1" />
<script type="text/javascript">
document.getElementById("header").innerHTML = "header";
document.getElementById("p1").innerHTML = "p1";
</script>
</body>
</html>
第一个JavaScript行几乎从页面中删除了p1
,即使p1
和header
在原始HTML中没有任何关系。 在try ... catch块中包装第二个JavaScript行时,捕获的错误是:
document.getElementById(...) is null
使用textContent
而不是innerHTML
时存在同样的问题。 我有点惊讶的是,每个人都说这是你应该如何更改元素的文本,当它真的不适合这个目的时。 设置它的正确方法是什么?
p
和h1
不是“空元素”,这意味着它们不会在打开它们的同一个标签中关闭(如img
和br
)。 如果你这样写它们,它们就不是有效的标签,浏览器会忽略它们(这就是为什么document.getElementById
找不到它们)。 试试这个:
<html>
<head></head>
<body>
<h1 id="header"></h1>
<p id="p1"></p>
<script type="text/javascript">
document.getElementById("header").innerHTML = "header";
document.getElementById("p1").innerHTML = "p1";
</script>
</body>
</html>
将您的HTML更改为:
<h1 id="header"></h1>
<p id="p1"> </p>
现在尝试使用JavaScript代码,因为它们不是空元素。
我认为你遇到的主要问题是设置结束标签的方式如下: <h1 id="header"/>
with /而不是结束语句。 这是不正确的,你需要像这样关闭它: <h1 id="header"></h1>
<p>
标签和许多其他标签也是如此。 您可以在此处找到此规则的一些例外情况:
http://www.w3schools.com/html/html_elements.asp
这是一个实际结果的例子!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.