0

以下のような2つのjavascript関数があり、テキストエリアから空白以外の行を数えます。

HTML:

<div id="map-devlist" >
    <div class="block-with-text-area">
    <div class="input-quest-with-text-area">Enter your device list(one device in one line)</div>
    <div class="input-resp-with-text-area"><span><textarea  class="textarea" id="devs" name="devs" type="text" onkeyup="devscount();"></textarea></span> </div> 
    </div>
</div>

<div id="lunidlist" >
    <div class="block-with-text-area">
        <div class="input-quest-with-text-area">Enter your LUN IDs in Hex(one ID in one line)</div>
        <div class="input-resp-with-text-area"><span><textarea  class="textarea" id="lunids" name="lunids" type="text" onkeyup="luncount();"></textarea></span> </div>  
    </div>
</div>

<div id="error1"></div>

Javascript:

function devscount()
{
    devcounts = 0;
    var lines = $("#devs").val().split("\n");
    for (var i = 0; i < lines.length; i++) {
        if (lines[i].length > 0) devcounts++;
    }
}   

function luncount()
{
    luncounts = 0;
    var lines = $("#lunids").val().split("\n");
    for (var i = 0; i < lines.length; i++) {
        if (lines[i].length > 0) luncounts++;
    }

    if(devcounts == luncounts) {
        var message ="both counts are matching";
    } else {
        var message ="Mismatch between values";
        document.getElementById('error1').innerHTML=message;
    }
}

ここで、これら 2 つのテキストエリアの行数を比較したいと思います。それらが等しい場合と等しくない場合は、メッセージを表示する必要があります。しかし、上記のスクリプトは私にとってはうまくいきません。エコー document.getElementById('error1').innerHTML=devscount;document.getElementById('error1').innerHTML=luncounts;て対応する関数を実行すると、行数が完全に表示されます。しかし、それらの値を比較することはできません。どうやってするか ?

JSFIDDLE セットアップ

4

2 に答える 2

2

あなたの jsfiddle の問題は、問題だけではありませんでした。値を確認しようとしていた方法にも問題がありました。2 つのテキスト領域は、キーアップ時にアイテムをカウントする関数を実行していましたが、比較コードを実行していませんでした。両方を変更して 3 番目の関数を実行しcheckcounts、スクリプトを次のように変更しました...

var devcounts;
var luncounts;

function devscount() {
    devcounts = 0;
    var lines = $("#devs").val().split("\n");
    for (var i = 0; i < lines.length; i++) {
        if (lines[i].length > 0) devcounts++;
    }
}   

function luncount() {
    luncounts = 0;
    var lines = $("#lunids").val().split("\n");
    for (var i = 0; i < lines.length; i++) {
        if (lines[i].length > 0) luncounts++;
    }
}

function checkcounts() {
    devscount();
    luncount();

    var message;

    if(devcounts == luncounts) {
        message ="both counts are matching";
    } else {
        message ="Mismatch between values";
    }

    document.getElementById('error1').innerHTML=message;
}

作業中のjsfiddle...

于 2013-10-15T11:53:06.033 に答える
2

非常に単純なことをするのに非常に多くのコードを書いているように思えます。このフィドルのコードを置き換えました。単一の機能

function testCounts()
{
 var devCounts = $('#devs').val().split('\n').length;
 var lunCounts = $('#lunids').val().split('\n').length;
 var equals = (devCounts == lunCounts)?'Equal':'Not Equal';
 $('#error1').text(equals);
}

それとも、私はこれを完全に間違っていますか。

于 2013-10-15T12:04:55.530 に答える