replace()方法不替换输入

时间:2014-01-15 05:26:35

标签: javascript html variables replace

应该发生的是用户输入和提交的某些亵渎语言应该被删除的单词替换。

但事实并非如此。它显示没有检查员的字。

我应该使用if / else语句来完成这项工作吗?

<!DOCTYPE html>
<html>
<head>
<script>
    function myFunction() {
        var text = document.getElementById('input').value;
        var result = document.getElementById('clean');
        /* Fake 'bad words' for illustration */
        var a = text.replace("ack","a**");
        var ba = text.replace("bandaid","b******");
        var bi = text.replace("butch","b****");
        var f = text.replace("frack","f****");
        var p = text.replace("pee","p**");
        var s = text.replace("shoot","s****");
        var c = text.replace("cart","c***");
        var n = text.replace("night","n****");

        result.innerHTML=text;
    }
</script>
</head>
<body>
<textarea id="input"></textarea>
<br />
<input type="submit" onclick="myFunction();" />
<p id="clean"></p>
</body>
</html>

3 个答案:

答案 0 :(得分:4)

replace会返回 new 字符串,但不会修改原始字符串。

这意味着,您应该使用返回的值。

在这种情况下,text = text.replace(..)

编辑: 此外,您可以考虑使用正则表达式:"hello world".replace( /world/g, 'foo' ),以便替换搜索模式的多个实例。

答案 1 :(得分:0)

您在[{1}}中分配了clean中相同的值,您可以尝试使用input在“输入”中显示结果

clean

答案 2 :(得分:0)

你能试试吗,我已经改写了这个功能,以便于起诉。

<script>
    function myFunction() {
        var text = document.getElementById('input').value;
        var result = document.getElementById('clean');
        var Clean =  new Array("ack", "bandaid", "butch", "frack", "pee", "shoot", "cart", "night");
        var len = Clean.length;
        for(var i=0; i<len;i++){  
              text = AddHide(Clean[i], text);
        }
        result.innerHTML=text;
    }

    function AddHide(Text, String){
        if(String!=""){
            var StringLen = parseInt(Text.length)-1;
            var First = Text.charAt(0);             
            for(var k=0; k<StringLen;k++){                
                First +="*";
            }           
            String = String.replace(Text,First);
        }
        return String;
    }

</script>