2014-01-15 51 views
-4

应该发生的事情是用户输入并提交的某些亵渎语应该被删除的单词替换。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> 
+0

替换只适用于目标字符串的一个实例。尝试'text = text.split('ass')。join('a **')'。 – tewathia

+4

[你必须读这个...](http://blog.codinghorror.com/obscenity-filters-bad-idea-or-incredibly-intercoursing-bad-idea/) – ThiefMaster

回答

0

要分配在clean你从得到相同价值的input试试这个以显示clean你的结果应用在'输入”

function myFunction() { 
     var text = document.getElementById('input').value; 
     var result = document.getElementById('clean'); 
     text = text.replace("ack","a**"); 
     text = text.replace("bandaid","b******"); 
     text = text.replace("butch","b****"); 
     text = text.replace("frack","f****"); 
     text = text.replace("pee","p**"); 
     text = text.replace("shoot","s****"); 
     text = text.replace("cart","c***"); 
     text = text.replace("night","n****"); 

     result.innerHTML=text; 
    } 
+0

谢谢,这工作,但@tewathia回答那第一个哈哈 –

4

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

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

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

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

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> 
+7

@SunilDevre:如果你在文章中清理冒犯性话语,那么在上下文中这样做。不只是这个答案,而是所有的答案和问题。 –

+0

当然。但我没有发现任何问题... –