无法停止代码循环多次并更改变量

时间:2013-10-03 18:56:39

标签: jquery loops attributes

我创建了一个包含显示随机数的单元格的大表,我需要能够使用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();
}

1 个答案:

答案 0 :(得分: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。这样,如果元素已经具有类cellIsSet,则由于&& !$('#Cell'+tdID).hasClass('cellIsSet')语句,它不会尝试重新格式化。