2012-05-12 23 views
4

我有未知數量的輸入字段,類「添加」我只是想與jquery這些總結,不知道我在哪裏錯了。簡單的jQuery總和

<input name="add" class="add" type="text"> 
<input name="add" class="add" type="text"> 
<input name="add" class="add" type="text"> 
<input name="add" class="add" type="text"> 

<input type="button" value="" onClick="add()" /> 

`

function add(){ 
     val = 0; 
     $(".add").each(function() {  
      str = (parseInt(this.value)) 
      sum=str+str 
     }); 
     alert (sum) 
    } 

`

+0

+1的問題爲顯示它實際上是多麼令人驚訝的難寫一個正確的答案;-) – Alnitak

+0

爲什麼我的問題是-2? –

+1

@DanishAdeel:可能缺乏基本的故障排除。 –

回答

5

你從來沒有真正加入塞給sum

function add() { 
    var sum = 0; 
    $(".add").each(function() { 
     sum += +this.value; 
    }); 
    return sum; // an add function shouldn't really "alert" 
} 

如果目的是爲了只支持整數,使用parseInt(this.value, 10) [注意基數參數]代替+this.value

function add() { 
    var sum = 0; 
    $(".add").each(function() { 
     var str = this.value.trim(); // .trim() may need a shim 
     if (str) { // don't send blank values to `parseInt` 
      sum += parseInt(str, 10); 
     } 
    }); 
    return sum; 
} 

請參閱http://jsfiddle.net/alnitak/eHsJP/

+0

好吧,這是瘋了! =)那個'+'符號究竟做了什麼? =) – benqus

+2

@benqus它「轉換」爲一個(浮點)數字,並將空白字符串轉換爲0(而'parseInt'將空白轉換爲'NaN') – Alnitak

+0

感謝球員:)以最佳答案 –

4
function add(){ 
    var sum = 0; 
    $(".add").each(function() { 
     var val = parseInt($(this).val(), 10) 
     sum += (!isNaN(val) ? val : 0); 
    }); 
    alert(sum); 
} 

編輯:眼睛是雪亮的,得到了​​括號... =)和空間。

+2

此刻此代碼中有兩個錯誤 – Alnitak

+0

不解析整數 –

+0

@DanishAdeel是其中一個錯誤的一半 – Alnitak