javascript替换所有不起作用?

时间:2013-07-31 12:58:57

标签: javascript html

我必须替换html中的所有特殊字符,并且我创建了一个特殊字符数组,其中包含特殊字符和类名的键值对。 但这不起作用。我试过,以下是代码和小提琴链接。

var SpClass = new Array();
SpClass["&"] = "ampClass";

function temp() {
    var str = "";
    var tempLen = SpClass.length;
    var k = 0;
    var htmlForRemoveChar = $("#test").html();
    for (var splChar in SpClass) {
        if (k > tempLen) {

            $("#test").html(htmlForRemoveChar);
        }
        var tempChar = "/" + splChar + "/g";
        alert(htmlForRemoveChar);
        htmlForRemoveChar = htmlForRemoveChar.replace(tempChar, '<span class="specialChar "' + SpClass[splChar] + '"">W</span>');
        alert(htmlForRemoveChar);
        k++;
    }
    $("#test").html(htmlForRemoveChar);
}


<div id="test">this is test & i am doing testing</div>
<input type="button" onclick="temp();" value="Remove&">

http://jsfiddle.net/aps123/y4McS/1/

2 个答案:

答案 0 :(得分:2)

您只需更改此行:

var tempChar = "/" + splChar + "/g";

要:

var tempChar = new RegExp(splChar, 'g');

目前,您正在替换文字String,例如'/a/g'。如果您需要动态创建正则表达式的内容,则需要使用RegExp。如果内容是静态的,那么您可以使用正则表达式文字。

答案 1 :(得分:1)

尝试将replace(tempChar替换为replace(new RegExp(splChar, 'g')

看起来您使用的是字符串文字,而不是正则表达式文字。正则表达式的文字是这样的:

var x = /x/g;