0

我正在使用 PhoneGap 构建一个 android 应用程序。我从数字输入中获取值几次,一切正常,但有一次它的行为很奇怪:

我从数字输入中获取值并将其解析为整数 - 一切正常。但是当我将这些值相乘时,它会返回一个值 + NaN NaN NaN - 它看起来像这样:

var d1;
var d2;
var d3;
d1 = parseInt($('input.inputOne').val());
d2 = parseInt($('input.inputtwo').val());
d3 = ((d1*d2)/10000).toFixed(2);

在控制台中它给了我价值:

d1
100
d2
200
d3
2.00NaN NaN NaN

但是如果我将 d3 放入一些 DOM 元素中,它只会给我

NaN

我之前在这个应用程序中做过类似的事情,一切都很好 - 我不知道为什么在这个特殊情况下它不起作用 - 有什么建议吗?

编辑:

有趣的事情-即使我这样做

d3 = d2;

它给了我

d3
200NaN NaN NaN

编辑2:

更有趣的东西 - 如果我不解析为从输入(d1 和 d2)中获取的 int 值,在乘法之后它会给我:

d3
2.00undefined undefined NaN
4

2 回答 2

1

我确切地知道这里有什么问题。您在从输入元素获取值之前忘记了验证。我为你创建了一个演示小提琴。你可以看看它。如果您将输入元素中的值更改为非数字(如“abc”);当您尝试将其解析为 float 时:它会给您 NaN 的错误。因为它是“不是数字”。我希望这有帮助。 http://jsfiddle.net/rahulkhadse/CNB2t/28/

此外,要验证数字的输入值,您可以参考以下内容:

http://www.texotela.co.uk/code/jquery/numeric/

或者您可以使用“onkeyup”事件并检查用户在输入框中输入的值类型。

PS:jsFiddle上的代码:-

$(document).ready(function () {
    // Handler for .ready() called.
    var myVar = $("#validate_info").find('.inputOne').val();
    console.log(myVar);
    var output1 = $('input.inputOne').val();
    console.log(output1);
    var output2 = $('input.inputTwo').val();
    console.log(output2);
    $('#result').html(output1);
    // Starts
    var d1;
    var d2;
    var d3;
    d1 = parseFloat($('input.inputOne').val());
    d2 = parseFloat($('input.inputTwo').val());
    d3 = ((d1 * d2) / 10000).toFixed(2);
    console.log(" With parseFloat d1:" + d1 + ",  d2:" + d2 + ",   d3/result:" + d3);


    d1 = parseInt($('input.inputOne').val());
    d2 = parseInt($('input.inputTwo').val());
    d3 = ((d1 * d2) / 10000).toFixed(2);
    console.log(" With parseInt d1:" + d1 + ",  d2:" + d2 + ",   d3/result:" + d3);

});


    <div id="validate_info">
        <input id="id1" type="text" class="inputOne" value="100" name="abc">
        <input id="id2" type="text" class="inputTwo" value="200" name="abcef">
    </div>
    <br>
    <div id="result"></div>
于 2013-10-21T21:26:32.247 回答
0

终于我明白了——在我完成所有数学运算和将结果放入 DOM 的时间之间,我在这些数字输入上执行 empty()——当我停止它时,它会做数学运算很好(没有乘法错误等)-我认为这很奇怪,因为我认为如果我进行归因并且在我删除源输入之后它不应该影响具有输入值的那些变量。

于 2013-10-22T08:57:59.313 回答