难倒:Javascript比较错误

gre*_*ir3 3 javascript comparison plot graph

我正在为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>
Run Code Online (Sandbox Code Playgroud)

然后我有代码来抓取这些值,并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();
});
Run Code Online (Sandbox Code Playgroud)

最后,对于这个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;
};
Run Code Online (Sandbox Code Playgroud)

然而,当xMin> = 2且xMax> = 10时出现问题,其中错误被抛入控制台,因为由于某种原因,比较返回false.您可以检查错误之前和之后给出的数字(修改为收到),它们将具有相同的值.

另一个特殊的事实是,当手动将相同数字的计算放入控制台时,比较返回true.这让我相信它与调用函数有关.

值得注意的是,当xMin> = 2且xMax> = 10时,问题才会出现.

我预览了你可以在这里测试:http://dl.dropbox.com/u/962292/web/plot.js/static.html

如果你能找到解决我的情况的话,我会非常感激.

Joe*_*Joe 6

你有字符串和需要数字:

var minX = +$('#minX').val(),
    maxX = +$('#maxX').val(),
    minY = +$('#minY').val(),
    maxY = +$('#maxY').val();
Run Code Online (Sandbox Code Playgroud)

+是一个简单的快速转换为数字.并且ID是唯一#window的无关紧要.

例如, "9" > "19"; // true