替换html中text的值,javascript - 如何替换div元素中的文本?

javascript - 如何替换div元素中的文本?

我需要动态地在DIV元素中设置文本。 什么是最好的浏览器安全方法? 我有prototypejs和scriptaculous可用。

TEXT GOES HERE

这是函数的样子:

function showPanel(fieldName) {

var fieldNameElement = document.getElementById('field_name');

//Make replacement here

}

sblundy asked 2019-05-18T07:05:52Z

13个解决方案

227 votes

你可以简单地使用:

fieldNameElement.innerHTML = "My new text!";

17 of 26 answered 2019-05-18T07:06:30Z

130 votes

更新了2013年及以后阅读此内容的所有人:

这个答案有很多搜索引擎优化,但所有的答案都严重过时,并依赖于图书馆来做所有当前浏览器开箱即用的事情。

要替换div元素中的文本,请使用所有当前浏览器中提供的Node.textContent。

fieldNameElement.textContent = "New text";

mikemaccana answered 2019-05-18T07:07:11Z

73 votes

function showPanel(fieldName) {

var fieldNameElement = document.getElementById("field_name");

while(fieldNameElement.childNodes.length >= 1) {

fieldNameElement.removeChild(fieldNameElement.firstChild);

}

fieldNameElement.appendChild(fieldNameElement.ownerDocument.createTextNode(fieldName));

}

这样做的好处是:

它只使用DOM,因此该技术可以移植到其他语言,并且不依赖于非标准的innerHTML

fieldName可能包含HTML,这可能是一次尝试的XSS攻击。 如果我们知道它只是文本,我们应该创建一个文本节点,而不是让浏览器为HTML解析它

如果我打算使用javascript库,我会使用jQuery,并执行以下操作:

$("div#field_name").text(fieldName);

请注意@AnthonyWJones的注释是正确的:“field_name”不是特别描述性的id或变量名。

Daniel Papasian answered 2019-05-18T07:08:06Z

47 votes

我将使用Prototype的update方法,该方法支持纯文本,HTML片段或定义toString方法的任何JavaScript对象。

$("field_name").update("New text");

Element.update文档

John Topley answered 2019-05-18T07:06:11Z

17 votes

$('field_name').innerHTML = 'Your text.';

Prototype的一个漂亮功能是$('field_name')与update完全相同。使用它!:-)

John Topley使用Prototype的update函数的答案是另一个很好的解决方案。

ceejayoz answered 2019-05-18T07:08:39Z

15 votes

快速回答是使用innerHTML(或原型的更新方法,这几乎是一样的)。 innerHTML的问题是您需要转义所分配的内容。 根据您的目标,您需要使用其他代码OR

在IE中: -

document.getElementById("field_name").innerText = newText;

在FF: -

document.getElementById("field_name").textContent = newText;

(实际上FF的代码中有以下内容)

HTMLElement.prototype.__defineGetter__("innerText", function () { return this.textContent; })

HTMLElement.prototype.__defineSetter__("innerText", function (inputText) { this.textContent = inputText; })

现在我可以使用innerText,如果你需要尽可能广泛的浏览器支持,那么这不是一个完整的解决方案,但在raw中都没有使用innerHTML。

AnthonyWJones answered 2019-05-18T07:09:33Z

5 votes

如果你真的希望我们继续你离开的地方,你可以这样做:

if (fieldNameElement)

fieldNameElement.innerHTML = 'some HTML';

Milan Babuškov answered 2019-05-18T07:09:58Z

4 votes

nodeValue也是您可以使用的标准DOM属性:

function showPanel(fieldName) {

var fieldNameElement = document.getElementById(field_name);

if(fieldNameElement.firstChild)

fieldNameElement.firstChild.nodeValue = "New Text";

}

palswim answered 2019-05-18T07:10:24Z

3 votes

el.innerHTML='';

el.appendChild(document.createTextNode("yo"));

Adrian Adkison answered 2019-05-18T07:10:43Z

1 votes

如果您倾向于开始在您的网站上使用大量JavaScript,那么jQuery使得使用DOM非常简单。

[http://docs.jquery.com/Manipulation]

使它简单如下:$(“#field-name”)。text(“some new text。”);

Steve Perks answered 2019-05-18T07:11:24Z

0 votes

function showPanel(fieldName) {

var fieldNameElement = document.getElementById(field_name);

fieldNameElement.removeChild(fieldNameElement.firstChild);

var newText = document.createTextNode("New Text");

fieldNameElement.appendChild(newText);

}

Holly Styles answered 2019-05-18T07:11:42Z

0 votes

这是一个简单的jQuery方式:

var el = $('#yourid .yourclass');

el.html(el.html().replace(/Old Text/ig, "New Text"));

Cosmin answered 2019-05-18T07:12:09Z

0 votes

如果你不能假设结构,请使用innerText - 使用Text#data更新现有文本性能测试

Youth overturn answered 2019-05-18T07:12:37Z

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是使用 JavaScript文本的某一文字并右键弹框进行变量替换的示例代码: ```javascript // 选替换的文字 var selectedText = window.getSelection().toString(); // 创建右键菜单 var menu = document.createElement("div"); menu.style.position = "absolute"; menu.style.backgroundColor = "white"; menu.style.border = "1px solid black"; menu.style.padding = "5px"; // 创建输入框和按钮 var input = document.createElement("input"); input.type = "text"; input.value = selectedText; menu.appendChild(input); var button = document.createElement("button"); button.innerHTML = "替换"; button.onclick = function() { // 替换文字 var textToReplace = document.getElementById("myText").innerHTML; var textToReplaceWith = input.value; var startIndex = textToReplace.indexOf(selectedText); var endIndex = startIndex + selectedText.length; var replacedText = textToReplace.substring(0, startIndex) + textToReplaceWith + textToReplace.substring(endIndex, textToReplace.length); // 更新文本 document.getElementById("myText").innerHTML = replacedText; // 隐藏菜单 menu.style.display = "none"; }; menu.appendChild(button); // 显示菜单 menu.style.left = event.pageX + "px"; menu.style.top = event.pageY + "px"; document.body.appendChild(menu); // 阻止默认右键菜单 event.preventDefault(); ``` 在这个示例,我们首先使用 `window.getSelection()` 方法获取用户选文本。然后,我们创建一个 `div` 元素作为右键菜单,并在其创建一个输入框和一个按钮,用于输入替换后的文字和触发替换操作。当用户右键单击选的文字时,我们显示这个菜单,并将其位置设置为鼠标指针的位置。当用户在输入框输入新的文字并单击按钮时,我们使用与前面示例相同的方法进行替换,并更新文本。最后,我们使用 `event.preventDefault()` 阻止浏览器默认的右键菜单。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值