使用javascript仅更改元素中的文本
是否有一种简单的方法仅使用普通javascript来更改元素的文本?在下面的代码中,我认为使用使用javascript仅更改元素中的文本,javascript,html,text,replace,Javascript,Html,Text,Replace,是否有一种简单的方法仅使用普通javascript来更改元素的文本?在下面的代码中,我认为使用.textContent,而不是.innerHTML会更改文本并留下图像 <head> <script> function change_stuff() { var div = document.getElementById('to_change'); div.textContent = "OMG...it'
.textContent
,而不是.innerHTML
会更改文本并留下图像
<head>
<script>
function change_stuff() {
var div = document.getElementById('to_change');
div.textContent = "OMG...it's an image!";
}
</script>
</head>
<body>
<div id="to_change">
This is a huge block of text that I want to replace while leaving the image in place
<img src="./the_image.jpg">
</div>
<button onclick="change_stuff();">
ThE dOER!!
</button>
</body>
如果您有任何帮助,我们将不胜感激。在中,一切都是一个“节点”。节点包括(注释节点、元素节点、属性节点甚至文本节点)。像div
这样没有任何嵌套元素可以包含文本的元素实际上隐含了包含原始文本的子元素,而该元素是文本节点,这似乎与直觉相反
为了访问它(它将与div
中的其他元素分开),您可以导航到div
并查找(在这种情况下,它是,因为文本排在第一,图像排在第二
另外,当涉及到用其他内容替换原始文本时…您试图在div
上调用.replace()
字符串函数,而不是div
中的文本。您可以导航到div
中的文本节点并对其进行操作,从而仅隔离div
中的文本
function change\u stuff(){
//获取对div元素的文本节点的引用,该节点是子节点
//分区的。
var divText=document.getElementById('to_change').firstChild;
//获取元素中的当前文本:
var text=divText.textContent;
//可以对文本执行任何操作(在本例中为替换)
//但必须将结果分配回元素
divText.textContent=text.replace(text,“”);
}
这是一个巨大的文本块,我想在保留图像的同时替换它
实干家!!
按属性获取第一个textNode并更新内容
function change\u stuff(){
//获取代码中的第一个子节点,即文本节点
var t=document.getElementById('to_change').firstChild;
//更新节点中的文本内容
t、 nodeValue=“”;
//或t.textContent=“”;
//或者删除节点本身
//t.parentNode.removeChild(t)
}
这是一个巨大的文本块,我想在保留图像的同时替换它
实干家!!
或实用主义:
function change\u stuff(){
var div=document.getElementById('to_change'),
img=div.getElementsByTagName('img')[0];
div.innerHTML=“天哪……这是一个图像!”;
儿童分部(img);
}
这是一个巨大的文本块,我想在保留图像的同时替换它
实干家!!
您需要使用innerText来设置div中的文本(即:div.innerText=replacement
)
请参阅。不。这是一厢情愿的想法。如果您只想更改,请将文本放在span中,或者从div中删除textNode
function change_stuff() {
var div = document.getElementById('to_change');
var text = div.textContent;
div.textContent = text.replace(text, "");
}