Javascript,将文本添加到具有现有文本节点的元素

Javascript,To add text to element which has a exsisting text-node

我想使用 nodeValue 属性 或 textContentPropery<h1> 标签中的 "Groceries" 旁边添加文本。我添加了两种对 me.Give 我不起作用的方法,这是它没有发生的原因,而不仅仅是答案。 我不想在这里使用 appendChild 属性。

<body>
    <h1 id="head">Groceries</h1
    ><div id="li-container"
        ><ul
        ><li>item2</li
        ><li>item3</li
        ><li>item4</li
        ><li>item5</li  
        ></ul
    ></div>

<script language="javascript" type="text/javascript">

    var list = document.getElementsByTagName("li");

    var head = document.getElementById("head").firstChild.nodeValue;
    head.nodeValue = head + list.length;

    //OR OR OR OR 
    //
    var head = document.getElementById("head").firstChild.textContent;
    head.textContent = head + list.length;

</script>
</body>

在您的例子中,head 是一个字符串值,因为您将 header 元素的 nodeValue 分配给它,但是对变量值所做的任何更改都不会反映出来在 header 中,因为字符串不是可变的 object.

您需要引用文本节点元素并设置其节点值

var list = document.getElementsByTagName("li");
var head = document.getElementById("head").firstChild;
console.log(head)
head.nodeValue = head.nodeValue + list.length;

演示:Fiddle

var head = document.getElementById("head").firstChild.nodeValue;

此处 head 仅包含文本 Groceries。所以你无法访问 groceries.nodevalue

所以你必须使用:

var head = document.getElementById("head").firstChild;
head.textContent = head.nodeValue + list.length;

在这里,我们首先将 textNode 的引用存储在 head 中。

在第二行中,我们在该 textNode 中设置 textContent。