2012-06-22 22 views
0

我希望在頁面上有兩個下一個框,然後可以將文本複製/粘貼到它們中,並使用JavaScript比較兩個框。從文本區域獲取線段並比較

<textarea id="first"></textarea> 
<textarea id="second"></textarea> 

使用JavaScript,然後我想通過符合這樣一些簡單的

if [line X of id="first"] != [line X of id="second"] 

比較兩個,行,然後我想強調說行。

我不知道如何逐行訪問textarea的值,或者我需要獲取整個值並將其分割到數組中嗎?

有人請提供給我的語法,以逐行訪問文本區域?

此外,如果您認爲我正在討論這個錯誤或他們是一個更簡單的方法,請讓我知道!

編輯: 這裏是我的完整的解決方案:

HTML

<!DOCTYPE html> 
<html> 
<head><script src="split.js?" type="text/javascript"></script> 
</head> 
<body> 
<textarea style="float: left; width: 45%" id="first" name="comments" autocomplete="off" cols="40" rows="5" width="50%"></textarea> 
<textarea style="float: right; width: 45%" id="second" name="second" autocomplete="off" cols="40" rows="5"></textarea><br> 
<button onClick="compare()">Compare</button> 
<br><br><br><br><br><br><br><center><div id="results"></div></center> 
</body> 
</html> 

的Javascript

function compare() { 
    document.getElementById('results').innerHTML = ""; 
    var first = document.getElementById("first"); 
    var second = document.getElementById("second"); 
    if(document.all) { // IE 
     var f = first.value.split("\r\n"); 
     var s = second.value.split("\r\n"); 
    } else { //Mozilla 
     var f = first.value.split("\n"); 
     var s = second.value.split("\n"); 
    } 
    for(var i=0; i<f.length; i++) { 
     if (f[i] !== s[i]) { 
      var row = i; 
      row++ 
      document.getElementById('results').appendChild(document.createTextNode("Box 1 Does not Match Box 2 on line: " + row)); 
      document.getElementById('results').appendChild(document.createElement('br')); 
     } 
    } 
}; 

位noobish但我學習!

+0

您可以通過的getElementById做到這一點(「第一」)和兩個之後,它比較作爲字符串 –

回答

2
text1 = document.getElementById("first").value.split("\n"); 
text2 = document.getElementById("second").value.split("\n"); 

var limit = text1.length > text2.length ? text1.length : text2.length; 

for(i=0;i<limit ; i++) 
{ 
    if(text1[i] == text2[i]) 
    { 
     alert(true); 
    } 
    else 
    { 
     alert(false); 
    } 
} 
1

這段代碼使用字符串,將其分解爲一個換行符,並返回位於提供的索引處的字符串:

function line(n, source) { 

    var a = source, 
     b = a.split('\n'); 

    return b[ n - 1 ]; 

}​ 

您可以使用它像這樣:

if (line(5, text) === "whatever") { 
    // ... 
} 

這裏你可以看到一個演示:http://jsfiddle.net/wFMty/

相關問題