2016-12-09 6 views
1

변환 이동하는 방법이없는 변경 예나 출력 텍스트 oldname과 원하는 요소 텍스트

사용자 삽입 텍스트 '거짓'의 경우 : 텍스트 상자

사용자 입력 텍스트를 "FALSE 토니".

과 내가 원하는 출력 아직 "거짓 토니"

내 코드는 여전히 "리나"텍스트 "토니"를 변경하는 이유

?

<script type="text/javascript" charset="utf-8"> 
 
\t 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']; 
 
\t \t \t \t var newNames = ['rina','susi']; 
 
\t \t \t \t if (oldNames== 'false ' + oldNames){ 
 
       document.getElementById("check").innerHTML = x.replaceArr(oldNames, oldNames); 
 
\t \t \t \t }else{ 
 
\t \t \t \t document.getElementById("check").innerHTML = x.replaceArr(oldNames, newNames); 
 
\t \t \t \t } 
 
      } 
 
\t </script> \t \t \t 
 
\t <body> 
 
\t ENTER TEXT: <br> 
 
\t <textarea name="kata_cari" id="myText" style="width:100%; height:100px;"></textarea> 
 
    <br> 
 
\t <input type="button" onclick="test();" value="Check!"> 
 
\t <br> 
 
\t <p id="check"></p> 
 
\t </body>

UPDATE :

질문을 향상 : 텍스트를 입력 시도 "내 이름은 RIAN이고 제 이름은 거짓 토니입니다."

"rian"출력이 여전히 "susi"로 변경 될 수 있습니까?

+1

x.includes(value)x.indexOf(value)>0을 사용하여 사용하는 경우? var oldNames = [ 'toni', 'rian']; \t \t \t \t var newNames = [ 'rina', 'susi']; \t \t \t \t (oldname과 == '거짓'+ oldname과) { –

+1

코드를 교체 할 경우 경우 (oldname과 == '거짓'+ oldname과)() x.includes ('거짓')가 다음 잘 – vijay

답변

2

사용은 텍스트 영역 값을 교체 할 단어가 포함되어 있는지 여부를 확인하기 위해 x.includes(value)을 포함한다. false가 포함되어 있으면 oldnames가 변경되지 않습니다.

당신은 IE가 다음 대신

당신이 그 코드와 함께 할 기대 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)){ 
 
\t \t \t \t \t \t var oldNames1=['false '+value]; 
 
\t \t \t \t \t \t x = x.replaceArr(oldNames1, oldNames1); 
 
\t \t \t \t \t }*/ 
 
     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>

+0

고마워요. .. 내가 ur 대답으로 이것을 닫을 것이다 –

+0

선생님. "내 이름은 rian이고 내 이름은 가짜 토니"라고 입력하면됩니다. "rian"출력이 여전히 "susi"로 변경 될 수 있습니까? . –

+0

실제로 toni는 이전 이름이고 rina는 toni의 새 이름이고 rian은 oldname이고 susi는 rian의 새 이름입니다. false라는 단어없이 텍스트를 입력하면 모든 oldname이 새 이름으로 변경됩니다. 귀하의 의견대로 작동 괜찮아요 – vijay

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 { 
} 
+1

를 사용하여 작동하는 경우와 ''false ''의 위치가 중요하지 않은 경우 .search()' –

+1

'startsWith'를 사용하십시오. –

+0

고마워요 .. 그 일 .. 이 조건을 배우기위한 링크를 주시겠습니까? –

1

시도해보십시오. 배열 대신 배열 값을 비교하십시오.

<script type="text/javascript" charset="utf-8"> 
 
\t 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']; 
 
\t \t \t \t var newNames = ['rina','susi']; 
 
\t \t \t \t if (x.indexOf('false') > -1){ 
 
       document.getElementById("check").innerHTML = x.replaceArr(oldNames, oldNames); 
 
\t \t \t \t }else{ 
 
\t \t \t \t document.getElementById("check").innerHTML = x.replaceArr(oldNames, newNames); 
 
\t \t \t \t } 
 
      } 
 
\t </script> \t \t \t 
 
\t <body> 
 
\t ENTER TEXT: <br> 
 
\t <textarea name="kata_cari" id="myText" style="width:100%; height:100px;"></textarea> 
 
    <br> 
 
\t <input type="button" onclick="test();" value="Check!"> 
 
\t <br> 
 
\t <p id="check"></p> 
 
\t </body>

+0

"my name false toni"를 입력하십시오. '토니'가 여전히 리나와 함께 변경되는 이유는 무엇입니까? –

+0

@ jack.D 당신이 원하는 것은 정확히 무엇입니까 ?? 내부 문자열이 거짓 인 경우 변경되지 않습니다 ??? 방금 Code를 업데이트했습니다. 지금 확인하실 수 있습니다. –

+0

Sir. 텍스트를 입력하려고한다면'x.includes ('false')'를 사용합니다. "나는 거짓 토니와 함께 두 개의 이름이 있습니다". "나는 가짜 토니와 함께 두 개의 이름을 가진 susi가있다"라는 출력을 내놓을 수 있습니까? , "라이언"은 여전히 ​​"susi"로 바뀔 수 있습니까? –