0

ページに次の2つのボックスが欲しいのですが、テキストをコピーして貼り付け、JavaScriptを使用して2つを比較できます。

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

次に、JavaScriptを使用して、2つを1行ずつ比較します。

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

次に、上記の行を強調したいと思います。

テキストエリアの値に1行ずつアクセスする方法がわかりません。または、値全体を取得して配列に分割する必要がありますか?

誰かがテキスト領域に1行ずつアクセスするための構文を教えてくれませんか?

また、私がこれについて間違っていると思う場合、または彼らがより簡単な方法である場合は、私に知らせてください!

編集:これが私の完全な解決策です:

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'));
        }
    }
};

少しおかしいですが、私は学んでいます!

4

2 に答える 2

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);
    }
}
于 2012-06-22T12:58:40.243 に答える
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/

于 2012-06-22T13:18:45.013 に答える