首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用良好的Ole JavaScript查找和替换Div中的单词

使用良好的Ole JavaScript查找和替换Div中的单词
EN

Stack Overflow用户
提问于 2011-05-31 07:29:36
回答 4查看 1.2K关注 0票数 1

我知道在jQuery中很容易做到这一点,但我正在尝试用JavaScript来做到这一点。

我有这个:

代码语言:javascript
复制
window.addEventListener('load', function() {

        function replaceName() {
        var oldText= "Mobile";
        var newText = "Stackoverflow";
        var oldString= document.getElementById('replace').innerHTML;
        var newString = oldString.replace(/oldText/g, newText);
        document.getElementById('replace').innerHTML = newString;
        }

        replaceName();

}, false);

不确定我做错了什么?有什么想法吗?

谢谢

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-05-31 07:32:57

问题出在这里:

代码语言:javascript
复制
var newString = oldString.replace(/oldText/g, newText);

它实际上是在搜索oldText,而不是"Mobile"

正如kb所说,您可以通过以下方法解决此问题:

代码语言:javascript
复制
var newString = oldString.replace(new RegExp(oldText, "g"), newText);
票数 4
EN

Stack Overflow用户

发布于 2011-05-31 07:41:13

目前,您使用的是容易出错的方式。

容易出错,因为您将丢失事件处理程序以及替换您可能不想替换的内容。如果搜索词是'a'呢?你想让所有的a元素变成任何替换字符串吗?

此外,不必要地序列化来自DOM的HTML,当您再次设置它时,需要重新解析它。

执行此操作的正确方法是仅迭代文本节点。

代码语言:javascript
复制
var replaceText = function replaceText(element, search, replace) {
    var nodes = element.childNodes;

    for (var i = 0, length = nodes.length; i < length; i++) {

        var node = nodes[i];

        if (node.childNodes.length) {
            replaceText(node, search, replace);
            continue;
        }

        if (node.nodeType != 3) {
            continue;
        }

        node.data = node.data.replace(new RegExp(search, 'g'), replace);
    }

}

jsFiddle

票数 7
EN

Stack Overflow用户

发布于 2011-05-31 07:41:54

为了提供一个不使用eval的答案(重复我的话:不要使用eval!),试一下这一行:

代码语言:javascript
复制
var newString = oldString.replace(new RegExp(oldText, "g"), newText);

以前有/pattern/flags,现在有new RegExp(pattern, flags)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6181593

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档