2014-09-04 17 views
1

我想添加單擊的所有單選按鈕的值,但我得到的數字不正確。如何通過使用正則表達式更改值來獲取單選按鈕值的總和?

<div id="config"> 
    <input type="radio" name="brand" id="dell" value="Dell $1500"> Dell 
    <input type="radio" name="brand" id="mackbookpro" value="MacbookPro $3000"> Macbook Pro 
    <input type="radio" name="brand" id="asus" value="Asus $2000"> Asus 

    <input type="radio" name="ram" id="4gb" value="4 Gb $60"> 4 GB RAM 
    <input type="radio" name="ram" id="8gb" value="4 Gb $90"> 8 GB RAM 
    <input type="radio" name="ram" id="16gb" value="4 Gb $125"> 16 GB RAM 

    <input type="radio" name="storage" id="250gb" value="250 Gb $100"> 250 Gb Storage 
    <input type="radio" name="storage" id="500gb" value="500 Gb $200"> 500 Gb Storage 
    <input type="radio" name="storage" id="900gb" value="900 Gb $300"> 900 Gb Storage 
</div> 

<div id="show">0</div> 

而jQuery的看起來像這樣

var displayPrice = document.getElementById('show'); 

$("#config input[type=radio]").click(function() { 
    var total = 0; 
    $("#config input[type=radio]:checked").each(function() { 
     var checked = $(this).val(); 
     var checkNum = checked.split('$')[1]; 
     total += parseFloat(checkNum); 
    }); 
    displayPrice.innerHTML = total; 
}); 

我越來越不加起來correctly.Is有數學什麼我做錯了嗎?

+0

你不斷地增加,而不是每次重置值。 – PlantTheIdea 2014-09-04 19:25:33

+2

什麼是dediPrice變量? – LcSalazar 2014-09-04 19:26:41

+0

你的代碼很好http://jsfiddle.net/66f4ay9L/也許dediPrice有意想不到的價值? – VladL 2014-09-04 19:29:49

回答

0

我調整了一點點,似乎是正常的工作:

$("#config").click("input[type=radio]",function() { 
    var total = 0; 

    $(this).parent().find('input[type=radio]').each(function() { 
     var self = this; 

     if(self.checked){ 
      total += parseFloat(self.value.split('$')[1]); 
     } 
    }); 

    alert(total); 
}); 

Here is a jsFiddle for it

0

看起來像添加一個字符串dediPrice到數字total結果一個字符串。

要確保它的工作原理轉換dediPrice爲數字,以及:

var dediPrice = parseFloat(document.getElementById('show').innerHTML); 

見琴:http://jsfiddle.net/66f4ay9L/1/

0

你的代碼工作正常。數學加起來完美。只是一些建議:

  1. 變化代替點擊事件
  2. THIS.VALUE代替$(本).VAL()
  3. + checked.split(」 $')並廢除parseFloat

DEMO

$(function() { 
    var displayPrice = $('#show')[0]; 
    $("#config input[type=radio]").on('change',function() { 
     var total = 0; 
     $("#config input[type=radio]:checked").each(function() { 
      var checked = this.value; 
      var checkNum = +checked.split('$')[1]; 
      total += checkNum; 
     }); 
     displayPrice.innerHTML = total; 
    }); 
});