Поставлен в тупик: Ошибка сравнения Javascript - PullRequest
3 голосов
/ 04 октября 2011

Я пишу библиотеку графиков / графиков для Javascript и натолкнулся на то, что кажется огромной проблемой.

У меня есть 4 числовых ввода для определения минимальных и максимальных значений, которые будет отображать график, оченькак на графическом калькуляторе TI-84: XMin , XMax , YMin , YMax .

<div id="window">
    <input type="number" class="bound" id="minX" value="" />
    <input type="number" class="bound" id="maxX" value="" />
    <br />
    <input type="number" class="bound" id="minY" value="" />
    <input type="number" class="bound" id="maxY" value="" />
</div>

Затем у меня есть код, который захватывает эти значения и помещает их в функцию Plot.setBounds(xMin, xMax, yMin, yMax) всякий раз, когда они изменяются:

var plot1 = new Plot();
$('#window .bound').change(function() {
    var minX = $('#window #minX').val(),
        maxX = $('#window #maxX').val(),
        minY = $('#window #minY').val(),
        maxY = $('#window #maxY').val();
    console.log('modified to:', minX, maxX, minY, maxY);
    plot1.setBounds(minX, maxX, minY, maxY);
    plot1.draw();
});

Наконец, для функции Plot.setBounds(xMin, xMax, yMin, yMax) у меня есть:

Plot.prototype.setBounds = function (xMin, xMax, yMin, yMax) {
    if ((xMin < xMax) && (yMin < yMax)) {
        this.bounds = [[xMin, xMax], [yMin, yMax]];
    } else {
        console.error('Plot.setBounds(xMin, xMax, yMin, yMax) requires maximum values that are greater than the minimum values!');
        console.log('received:', xMin, xMax, yMin, yMax);
    }
    return this;
};

Проблема, однако, возникает, когда xMin> = 2 и xMax> = 10, когда в консоль выдается ошибка, потому что по какой-то причине сравнение вернуло false.Вы можете проверить числа, приведенные до и после ошибки ( изменено на и получено ), и они будут иметь одинаковые значения.

Еще один специфический факт заключается в том, как, когдавычисления для тех же чисел помещаются в консоль вручную, сравнение возвращает true.Это заставляет меня поверить, что это как-то связано с вызовом функции.

Интересно также отметить, как проблема возникает только при xMin> = 2 и xMax> = 10.

У меня есть предварительный просмотр, который вы можете проверить здесь: http://dl.dropbox.com/u/962292/web/plot.js/static.html

Я был бы бесконечно благодарен, если бы вы смогли найти решение моей ситуации.

Ответы [ 2 ]

6 голосов
/ 04 октября 2011

У вас есть строки и вам нужны номера:

var minX = +$('#minX').val(),
    maxX = +$('#maxX').val(),
    minY = +$('#minY').val(),
    maxY = +$('#maxY').val();

+ - это простое быстрое преобразование в число. И идентификаторы уникальны для #window, не имеет значения.

Например, "9" > "19"; // true

0 голосов
/ 04 октября 2011

Еще один способ получить число с помощью parseInt () .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...