[英]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.