在HTML/JavaScript中,如何动态设置标题/段落元素的文本而不覆盖其他任何内容?

Pan*_*sis 3 html javascript

当您搜索如何动​​态设置段落或标题元素的文本时,您会遇到几乎相同的代码行:

document.getElementById("header").innerHTML = "some text";
Run Code Online (Sandbox Code Playgroud)

但这并不完全正确.请看以下示例:

<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>
Run Code Online (Sandbox Code Playgroud)

第一行的JavaScript几乎删除p1从页,即使p1header没有什么在原始的HTML做对方.在try ... catch块中包装第二个JavaScript行时,捕获的错误是:

document.getElementById(...) is null
Run Code Online (Sandbox Code Playgroud)

当您使用textContent而不是时,存在同样的问题innerHTML.我有点惊讶的是,每个人都说这是你应该如何更改元素的文本,当它真的不适合这个目的时.设置它的正确方法是什么?

小智 8

p并且h1不是"空元素",这意味着它们不会在打开它们的相同标记中关闭(如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>
Run Code Online (Sandbox Code Playgroud)