0

乱数を表示するセルを含む大きなテーブルを作成しました。JQuery を使用して各セルに対してしきい値を設定できるようにする必要があります。現在、これは最初の比較でのみ機能します。その後、しきい値を入力すると、最初のセルで比較した値を忘れてしまい、以前のすべての比較を新しいしきい値と比較するだけです。これを簡単に表現する方法がわかりません。比較のためのコードは以下のとおりです

function OpenDialog(tdID) {
    $('#openThreshold').dialog('open');
    stopTimer();

    $('#btnSaveThreshold').click(function () {
    SetValuesForCompare(tdID);
    });
}

function SetValuesForCompare(tdID) {
    //Set the values ready for comparing the variables (also carry through the cell ID)
    var thrsVal = $('#txtThreshold').val();
    var cellVal = document.getElementById("Cell" + tdID).innerHTML;
    CompareValues(thrsVal, cellVal, tdID);
}

function CompareValues(thrsVal, cellVal, tdID) {
    //compare and choose colour
    if (cellVal < thrsVal) {
        document.getElementById("Cell" + tdID).className = 'red';
    }
    else if (cellVal == thrsVal) {
        document.getElementById("Cell" + tdID).className = 'green';
    }
    else if (cellVal > thrsVal) {
        document.getElementById("Cell" + tdID).className = 'yellow';
    }
    //Close dialog and hide all text boxes
    $('#openThreshold').dialog('close');
    $("#Thrs" + tdID).hide();
}
4

1 に答える 1

0

クラス「cellIsSet」などを追加します。それで:

function CompareValues(thrsVal, cellVal, tdID) {
    //compare and choose colour
    if (cellVal < thrsVal && !$('#Cell'+tdID).hasClass('cellIsSet')) {
        //document.getElementById("Cell" + tdID).className = 'red';
        $('#Cell'+tdID).addClass('red').addClass('cellIsSet');
    }
    else if (cellVal == thrsVal && !$('#Cell'+tdID).hasClass('cellIsSet')){
        //document.getElementById("Cell" + tdID).className = 'green';
        $('#Cell'+tdID).addClass('green').addClass('cellIsSet');
    }
    else if (cellVal > thrsVal && !$('#Cell'+tdID).hasClass('cellIsSet')) {
        //document.getElementById("Cell" + tdID).className = 'yellow';
        $('#Cell'+tdID).addClass('yellow').addClass('cellIsSet');
    }
    //Close dialog and hide all text boxes
    $('#openThreshold').dialog('close');
    $("#Thrs" + tdID).hide();
}

getElementByIDとにかくjQueryを使用しているため、呼び出しを再フォーマットしたことに注意してください。そうすれば、要素が既に class を持っている場合、ステートメントcellIsSetのために再フォーマットを試みません。&& !$('#Cell'+tdID).hasClass('cellIsSet')

于 2013-10-03T19:07:52.240 に答える