Javascript jQuery-替换(文本)内容 情景
我有以下HTML代码片段:Javascript jQuery-替换(文本)内容 情景,javascript,jquery,html,dom,frontend,Javascript,Jquery,Html,Dom,Frontend,我有以下HTML代码片段: <div class="container"> TEXT <p> PARAGRAPH 1 </p> <p> PARAGRAPH 2 </p> <p> PARAGRAPH 3 </p> <p> PARAGRAPH 4 </p> </div> **但是,我不能使用innerHTML,因为它返回
<div class="container">
TEXT
<p> PARAGRAPH 1 </p>
<p> PARAGRAPH 2 </p>
<p> PARAGRAPH 3 </p>
<p> PARAGRAPH 4 </p>
</div>
**但是,我不能使用innerHTML
,因为它返回“undefined
”:
**使用replaceChild
方法也不起作用(它会在控制台日志中触发uncaughtdomexception
)
**最后,使用
document.getElementsByClassName("container")[0].innerHTML
选择
中的所有HTML内容
是否有任何方法可以访问“文本”的文本内容并动态更改它
- JSFIDLE
document.getElementsByClassName("container")[0].childNodes[0].textContent = "New Text";
我知道这样显示未格式化的纯文本是不好的做法,但我必须处理这种情况。如果可以,我只想添加一些HTML标记,但是,在这种情况下我没有选择。使用
textContent
而不是innerHTML
。您可以使用正则表达式来完成此操作。提示:停止使用alert()
进行调试console.dir()
会给出一个关于更改什么属性的强烈提示;我还应该在我的JSFIDLE中放置console.dir
。。。感谢hintI,如果我能更改HTML文件,我会这么做;遗憾的是,我无法更改该代码(我只能使用JS/jQuery)啊,好的,2分钟后我给你一个解决方案检查更新后的答案textContent
不应用于设置
,而应用于获取
文本,因为它表示节点及其所有子体的文本内容。在本例中,它作为节点TEXT
工作,没有子节点(但规则仍然有效)。
var textnode = document.createTextNode("THE TEXT HAS BEEN REPLACED");
var element = document.getElementsByClassName("container")[0].childNodes[0];
item.replaceChild(textnode, item);
document.getElementsByClassName("container")[0].innerHTML
$(".container").html($(".container:first-child").html().replace("TEXT","TEXT CHANGED"));
document.getElementsByClassName("container")[0].childNodes[0].textContent = "New Text";