2

假设我在 html 文件的 DIV 中有名为“Hello World”的文本。我想操纵“Hello World”文本中的第六个位置并将结果替换为 DOM,例如使用 innerHTML 或类似的东西。

我的做法是

var text = document.getElementById("divID").innerText;

现在不知何故,我得到了文本,并使用 charAt 为特定位置操作结果,并通过替换整个字符串而不只是那个位置元素来替换 html 中的结果。我想问的是我们是否必须每次都替换整个字符串,或者有没有一种方法可以从特定位置提取字符并仅替换该位置的结果而不是整个字符串或 div 内的文本。

4

4 回答 4

1

var newtext=text.replace(text[6],'b'); 应该管用。很高兴你问,我不知道这会奏效。

好奇它的工作原理,它也不会替换该字符的所有实例,这很奇怪……我猜用括号表示法访问字符会将字符视为一些“字符”对象,而不仅仅是字符串。

不要引用我的话。

于 2013-03-31T06:12:41.463 回答
1

是的,您必须用另一个替换整个字符串,因为字符串在 JavaScript 中是不可变的。您可以通过各种方式将其隐藏在函数调用后面,但最终会发生的是构造一个替换旧字符串的新字符串。

于 2013-03-31T06:12:41.527 回答
1

如果您只需要在已经存在的字符串中插入一些文本,您应该使用replace(). 尝试仅替换一个字符不会真正获得任何好处,因为无论如何它都需要创建一个新字符串(因为字符串是不可变的)。

jsFiddle

var text = document.getElementById("divID").innerText;

// find and replace
document.getElementById("divID").innerText = text.replace('hello world', 'hello big world');
于 2013-03-31T06:12:49.373 回答
1

带有 div 的文本实际上是文本节点,因此我们必须通过用新内容替换旧内容来显式地操作它们的内容。

如果您使用的是 jQuery,那么您可以参考以下链接了解可能的技术:

[链接用 jQuery 替换文本节点] http://www.bennadel.com/blog/2253-Replacing-Text-Nodes-With-jQuery.htm

在幕后,我猜 jQuery 仍然会替换该文本节点的整个字符串 ** **

于 2013-03-31T06:20:06.887 回答