2013-11-25 31 views
-2

下面的一段代碼沒有給出任何預期的輸出。我嘗試了很多時間來得到確切的輸出,但沒有用。請讓我知道爲什麼會發生這種情況,以及我犯了什麼錯誤。jquery結果不是即使evrything是正確的

<!DOCTYPE html> 
<html lang="en-US"> 
<head> 
    <title>My try</title> 
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 

<script> 

$(document).ready(function(){ 
    var a = $("#a").val(); 
    var b = $("#b").val(); 
    $("#bt1").on("click", function(){ 
     var sum = a + b; 
     alert(sum);   
    }) 
}) 
</script> 
</head> 
<body> 
    <input type="text" id="a" name="option"> 
    <input type="text" id="b" name="task"> 
<input id="bt1" type="button" value="click here"></body> 
</html> 

回答

2

你正在試圖獲得點擊按鈕前值。當您撥打.val()時,它將返回一個字符串,它是而非在輸入的實際值發生更改時發生更改。

當您單擊時,值仍然是相同的值,因此您得到錯誤的輸出。

相反,您可以將元素保存在變量中,並在單擊按鈕時獲取該值。

這應該工作就像一個魅力:

$(document).ready(function(){ 
    var a = $("#a"); 
    var b = $("#b"); 

    $("#submit").on("click", function(){ 
     var sum = parseInt(a.val(), 10) + parseInt(b.val(), 10); 
     alert(sum); 
    }) 
}); 

正如A.沃爾夫提到的,因爲.val()返回字符串,將它們實際上是串聯。所以你必須首先強制數值,因此parseInt()

+1

你在這裏連接字符串轉換變量(a和b)爲整,你必須將輸入值轉換爲數字 –

+0

Excellant !!!賴特答案。謝謝 – Sakthivel

+1

使用parseInt(),你應該總是設置基數的情況下:'parseInt(a.val(),10)' –

0

DEMO

$(document).ready(function() { 
    $("#submit").on("click", function() { 
     var a = +$("#a").val(); 
     var b = +$("#b").val(); 
     var sum = a + b; 
     alert(sum); 
    }) 
}) 
1
  • 錯誤1:試圖檢索事件調用之前的值,因此值一旦檢索到的頁面加載,當這兩個文本框爲空。

  • 錯誤2:您想sum但你只是連接兩個stringsint首先進行除parse他們int通過parseInt()

    $(document).ready(function(){ 
    $("#submit").on("click", function(){ 
        var a = $("#a").val(); 
        var b = $("#b").val(); 
        var sum = parseInt(a) + parseInt(b); 
        alert(sum);   
    }) 
    }) 
    
+0

也許數字不僅是整數。使用'+'會將它轉換爲數字 –

+0

得到你的第一點,他們也可以浮動,但我認爲他得到了點,並使用正確的'解析'acc。滿足他的要求。沒有讓你第二條語句「使用+將它轉換爲數字」,你能解釋一下嗎? – SajjadHashmi

+1

'var a = + $(「#a」)。val();''a'是一個數字(整數或浮點數無關緊要) –

0

海蘭!

你做錯了兩兩件事:

首先,你應該把放干將爲「點擊」功能。

$("#submit").on("click", function(){ 
     var a = $("#a").val(); 
     var b = $("#b").val(); 

謝勝利,所有的同時,jQuery的默認情況下得到的字符串從值,所以你應該parseInt()

而且Demo

相關問題