用普通javascript替换HTML中的文本,使其他HTML保持原样

用普通javascript替换HTML中的文本,使其他HTML保持原样,javascript,Javascript,我正在尝试编写纯javascript函数来将文本“Passed”替换为“Completed”。div#提示符中的HTML应该保持不变,并且是可变的。这是HTML- <div id="prompt"> Passed <a href="#">Take a survey</a> <button type="button" data-behavior="hide.prompt"></button> </div> 也试过

我正在尝试编写纯javascript函数来将文本“Passed”替换为“Completed”。div#提示符中的HTML应该保持不变,并且是可变的。这是HTML-

<div id="prompt">
  Passed
  <a href="#">Take a survey</a>
  <button type="button" data-behavior="hide.prompt"></button>
</div>
也试过这个——

var text = document.getElementById('prompt').innerHTML;
text.replace("Passed", "Completed");

我做错了什么?谢谢你的帮助

replace
不会对字符串进行变异,而是返回一个新字符串。字符串是不可变的

 var text = document.getElementById('prompt');
 text.textContent = text.textContent.replace("Passed", "Completed");

实际上,您的元素包含一个可以覆盖的文本节点:

 document.getElementById('prompt').childNodes[0].textContent = "Completed";

与其替换文本,不如在外部
div
上切换一个类

有了它,你也可以自定义它的HTML

堆栈片段

.prompt::before{
内容:"通过";;
}
.prompt.hidden::before{
内容:“已完成”;
}
.prompt.hidden按钮{
显示:无;
}
/*演示样式*/
.prompt按钮{填充:5px20px;}
hr{margin:20px 0;}


 document.getElementById('prompt').childNodes[0].textContent = "Completed";