如何跳过转换元素文本

时间:2016-12-09 06:59:47

标签: javascript html html5

如果用户插入文字' false'

,我希望输出文字旧名不会改变

例如:

用户输入文字" false toni"在文本框中。

我希望输出仍然是" false toni"

为什么我的代码仍会更改文字" toni"与" rina"?



<script type="text/javascript" charset="utf-8">
	String.prototype.replaceArr = function(find, replace) {
                var replaceString = this;
                var regex;
                for (var i = 0; i < find.length; i++) {
                    regex = new RegExp(find[i], "g");
                    replaceString = replaceString.replace(regex, replace[i]);
                }
                return replaceString;
            }

            function test() {
                var x = document.getElementById("myText").value;
                var oldNames = ['toni','rian'];
				var newNames = ['rina','susi'];
				if (oldNames== 'false ' + oldNames){
                document.getElementById("check").innerHTML = x.replaceArr(oldNames, oldNames);
				}else{
				document.getElementById("check").innerHTML = x.replaceArr(oldNames, newNames);
				}
            }
	</script>			
	<body>
	ENTER TEXT: <br>
	<textarea name="kata_cari" id="myText" style="width:100%; height:100px;"></textarea>
    <br>
	<input type="button" onclick="test();" value="Check!">
	<br>
	<p id="check"></p>
	</body>
&#13;
&#13;
&#13;

更新:

改善问题: 尝试输入文字&#34;我的名字是rian,我的名字是假的#34; 。

可以输出&#34; rian&#34;仍然改为&#34; susi&#34;?

3 个答案:

答案 0 :(得分:2)

使用包括x.includes(value)来检查文本区域值是否包含您要替换的单词。如果它包含false,那么你的oldnames不会被更改。

如果您使用的是IE,请使用x.indexOf(value)>0代替x.includes(value)

http://www.w3schools.com/jsref/jsref_includes.asp

<script type="text/javascript" charset="utf-8">
  String.prototype.replaceArr = function(find, replace) {
    var replaceString = this;
    var regex;
    for (var i = 0; i < find.length; i++) {
      regex = new RegExp(find[i], "g");
      replaceString = replaceString.replace(regex, replace);
    }
    return replaceString;
  }

  function test() {
    var x = document.getElementById("myText").value;
    var oldNames = ['toni', 'rian'];
    var newNames = ['rina', 'susi'];
    oldNames.forEach(function(value, index) {
      /*if (x.includes('false '+value)){
						var oldNames1=['false '+value];
						x =  x.replaceArr(oldNames1, oldNames1);
					}*/
      if (x.includes(value)) {
        var oldNames1 = [value];

        x = x.replaceArr(oldNames1, newNames[index]);

        newNames1 = ['false ' + newNames[index]];
        oldNames1 = ['false ' + value];

        x = x.replaceArr(newNames1, oldNames1);


      }
    });
    document.getElementById("check").innerHTML = x;
  }
</script>

<body>
  ENTER TEXT:
  <br>
  <textarea name="kata_cari" id="myText" style="width:100%; height:100px;"></textarea>
  <br>
  <input type="button" onclick="test();" value="Check!">
  <br>
  <p id="check"></p>
</body>

答案 1 :(得分:1)

您的错误检查条件错误,您可以使用substr

执行此操作
if (x.substr(0, 6) === 'false ') {
    // The string starts with false
} else {
}

您可以从MDN找到有关substr的更多详细信息。

更新:正如评论中所述,可以通过startsWith完成,这是一种更好的方法。

if (x.startsWith('false ')) {
    // The string starts with false
} else {
}

答案 2 :(得分:1)

试试这个。 比较数组值而不是数组。

<script type="text/javascript" charset="utf-8">
	String.prototype.replaceArr = function(find, replace) {
                var replaceString = this;
                var regex;
                for (var i = 0; i < find.length; i++) {
                    regex = new RegExp(find[i], "g");
                    replaceString = replaceString.replace(regex, replace[i]);
                }
                return replaceString;
            }

            function test() {
                var x = document.getElementById("myText").value;
                var oldNames = ['toni','rian'];
				var newNames = ['rina','susi'];
				if (x.indexOf('false') > -1 ){
                document.getElementById("check").innerHTML = x.replaceArr(oldNames, oldNames);
				}else{
				document.getElementById("check").innerHTML = x.replaceArr(oldNames, newNames);
				}
            }
	</script>			
	<body>
	ENTER TEXT: <br>
	<textarea name="kata_cari" id="myText" style="width:100%; height:100px;"></textarea>
    <br>
	<input type="button" onclick="test();" value="Check!">
	<br>
	<p id="check"></p>
	</body>