Невозможно остановить циклическое повторение кода и изменение переменной

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();
}
Теги:
loops
attributes

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. Таким образом, если элемент уже имеет класс cellIsSet, он не будет пытаться переформатировать из-за && !$('#Cell'+tdID).hasClass('cellIsSet').

  • 0
    Ах, да, это работает, спасибо, я просто пытаюсь научиться программировать, и у меня есть некоторые трудности с некоторыми аспектами, я создаю небольшой проект в качестве отправной точки, у меня есть еще несколько вопросов, было бы более признательным, если Вы могли бы потратить некоторое время и помочь мне, не имеет значения, если нет, и да, я знаю, что в Интернете есть много материала, но я не могу найти, чтобы найти что-то для того, что я пытаюсь сделать. Нет проблем, если нет.
  • 0
    @JackHolmes, конечно, пожалуйста, присоединяйтесь ко мне в чате chat.stackoverflow.com/rooms/37394/jquery-help
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню