Javascript: сравнение двух значений всегда не равно - PullRequest
2 голосов
/ 20 февраля 2012

Я пытаюсь что-то сделать, но я борюсь с глупой ошибкой, надеюсь, вы мне поможете.

Как вы можете видеть в моем коде, у меня на сервере есть какой-то флажок, и я прикрепил к немуФункция JavaScriptЭта функция получает два значения (текущее значение и исходное значение).Моя проблема в том, что когда эта функция срабатывает на if, она всегда попадает в первое предложение и никогда не достигает предложения else, и это не имеет никакого смысла.

Когда я использовал несколько предупреждений в своем коде, эточто происходит:

дело 1: предупреждение # 1 оригинал: false ток: истина предупреждение # 2 true

дело 2: оповещение # 1 оригинал: false ток: ложное оповещение # 2 true

Как вы видите, неважно, что я получаю правдой во втором оповещении.

Надеюсь, мне удалось объяснить мою проблему.

<asp:CheckBox id="chkIsCustomQuantity" originalvalue="false" runat="server" onclick="checkChange(this.checked, this.attributes['originalvalue'].value" />

<script type="text/javascript" language="javascript">
    function checkChange(value, originalValue) {

        //i added this for debugging purpose
        alert('original: ' + originalValue + ' ' + 'current: ' + value);
        alert(value != originalValue);

        if (value != originalValue) {
             // always happens
        }
        else {
              // never happens
        }
    }

</script>

1 Ответ

6 голосов
/ 20 февраля 2012

originalValue всегда строка. value - логическое значение. Таким образом, они никогда не равны, но когда вы распечатываете их, они кажутся идентичными (так как они оба преобразуются в одно и то же строковое значение в этой точке).

Вы можете исправить это различными способами. Один простой способ - сначала преобразовать обе строки:

if (String(value) != String(originalValue))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...