簡體   English   中英

在HTML / 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 ,即使p1header在原始HTML中沒有任何關系。 在try ... catch塊中包裝第二個JavaScript行時,捕獲的錯誤是:

document.getElementById(...) is null

使用textContent而不是innerHTML時存在同樣的問題。 我有點驚訝的是,每個人都說這是你應該如何更改元素的文本,當它真的不適合這個目的時。 設置它的正確方法是什么?

ph1不是“空元素”,這意味着它們不會在打開它們的同一個標簽中關閉(如imgbr )。 如果你這樣寫它們,它們就不是有效的標簽,瀏覽器會忽略它們(這就是為什么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

這是一個實際結果的例子!

http://jsfiddle.net/nd3Dq/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM