2013-10-21 56 views
0

我正在構建一個使用PhoneGap的android應用程序。我從數字輸入夫婦時間的值,一切工作正常,但在一個時刻,它的行爲怪異的方式:乘法js返回數字和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 

我在這個程序做similiar東西之前,一切都很好 - 我不知道爲什麼在這個特殊的情況下,這是行不通的 - 有什麼建議?

編輯:

有趣的事情 - 即使我做例如

d3 = d2; 

它給了我

d3 
200NaN NaN NaN 

編輯2:

更多有趣的東西 - 如果我不解析爲int從輸入(D1和D2)中獲得的值,相乘之後它給我:

d3 
2.00undefined undefined NaN 
+0

請提供實際細節。 '100 * 10'永遠不會返回任何類似'NaN'的東西,所以你會留下一些細節。 –

+2

NaN通常在您嘗試使用null,undefined或Infinity成員的數學運算時返回(並且有時可以使用未定義的成員返回Infinity)。 –

+1

你parseInt應該是'parseInt(variable,10)',其中10是基數。 – MBillau

回答

1

我確切地知道這裏的問題。 您從輸入元素獲取值之前忘記驗證。 我爲你創建了一個演示小提琴。你可以看看它。 如果您將輸入元素中的值更改爲不是數字的值(如「abc」);當你試圖解析它浮動:它會給你錯誤的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> 
+0

謝謝 - 我試過了你提供的兩個解決方案,但它仍然無效:/也許我會嘗試在真正的android手機上模擬這個而不是模擬器,並把結果放在這裏。 – mrmnmly

0

最後我得到它 - 在時間點的同時,當我已經做了所有的數學和的時候,我已經把結果到DOM我在這些數字輸入上做空() - 當我停止它時,它會做數學罰款(沒有乘法錯誤等) - 這是奇怪的我想,因爲我認爲如果我做屬性,並且在我將刪除源輸入那麼它不應該影響具有輸入值的那些變量。