<div id='container'>
This is some text
<span> more text </span>
</div>
如何在不影响“span”的情况下只更新文本部分(“这是一些文本”)?如何仅更新DIV文本而不更新任何其他子节点
<div id='container'>
This is some text
<span> more text </span>
</div>
如何在不影响“span”的情况下只更新文本部分(“这是一些文本”)?如何仅更新DIV文本而不更新任何其他子节点
纯javascript溶液
var fieldNameElement = document.getElementById('container');
fieldNameElement.removeChild(fieldNameElement.firstChild);
var newText = document.createTextNode("New Text");
fieldNameElement.insertBefore(newText , fieldNameElement.firstChild);
或
Jquery的
$('#container').each(function(i,el) {
el.firstChild.data = 'New Title Goes Here';
});
它似乎并没有为我工作。 – 2012-07-18 19:29:25
@PrakashRaman - 嘿尝试演示其工作的人... – 2012-07-18 19:33:55
@BrianWarshaw - 认为它的炒作需要,它会被选中... – 2012-07-18 20:15:02
var childNodes = elem.childNodes;
for (var i = 0; i < childNodes.length; i++) {
var child = childNodes[i];
if (child.nodeName == "#text") {
elem.removeChild(child);
i--;
}
}
在IE7中工作(这就是我得到的)。您可能需要为不同的浏览器调整nodeName检查,但整体概念是相同的:不检查firstChild
,通过nodeName
属性检查节点的类型。
用段落标签格式化它最简单,并使用javascript来更改段落标记的innerHTML。这是仅改变文本的最简单和最短的方式。
<div id='container'>
<p id="text">This is some text</p>
<span> more text </span>
</div>
你打算如何选择它? JS? jQuery的? – zen 2012-07-18 19:15:26
这甚至有效吗?我不是专家,虽然所以我不知道,但对我来说,文本应该在某种标签,一个div,p,span等。 – 2012-07-18 19:16:00
想不到任何方式,除了肮脏的黑客。就像存储子节点一样,替换文本并再次插入子节点 – 2012-07-18 19:16:16