Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用参数而不是值获取单选按钮组的总和_Javascript_Jquery_Html_Radio Button - Fatal编程技术网

Javascript 如何使用参数而不是值获取单选按钮组的总和

Javascript 如何使用参数而不是值获取单选按钮组的总和,javascript,jquery,html,radio-button,Javascript,Jquery,Html,Radio Button,我有多组单选按钮,其中每一组的选定值需要添加并显示给用户。到目前为止,我一直在通过switch语句更改函数中的值来处理加法 <form name="config" id="config"> <div class="row-fluid"> <h3>Memory</h3> <input type="radio" name="section1" value="4gb" onclick="changePrice(0)" checked

我有多组单选按钮,其中每一组的选定值需要添加并显示给用户。到目前为止,我一直在通过switch语句更改函数中的值来处理加法

<form name="config" id="config">
<div class="row-fluid">
    <h3>Memory</h3>
    <input type="radio" name="section1" value="4gb" onclick="changePrice(0)" checked>4gb<br>
    <input type="radio" name="section1" value="8gb" onclick="changePrice(100)">8gb (+$100)<br>
    <input type="radio" name="section1" value="16gb" onclick="changePrice(200)">16gb (+$200)
</div>
<div class="row-fluid">
    <h3>Primary Hard Drive</h3>
    <input type="radio" name="section2" value="dell" onclick="changePrice(0)" checked>Dell<br>
    <input type="radio" name="section2" value="asus" onclick="changePrice(100)">Asus(+$100)
</div> 
</form>
<div id="price"></div>

是否有一种方法可以使用通过changePrice函数传递的参数进行这些计算(这样我就不必更改switch语句中的值)?

如果您将函数定义更改为以下内容,它将接受您的参数

function changePrice(val1) 
如果您可以更改每个输入字段上的value属性以包含增量值,那么计算总和的过程就会容易得多。(这可能不适合您试图解决的问题

jQuery的基本解决方案

var sum = $("input[name=section1]").val() + $("input[name=section2]").val();
var sum = 0;
$("input[type=radio]").each(function(){sum += $(this).val();});
如果列表很长,可以使用jQuery迭代单选按钮集

var sum = $("input[name=section1]").val() + $("input[name=section2]").val();
var sum = 0;
$("input[type=radio]").each(function(){sum += $(this).val();});

下面是如何在没有jQuery的情况下实现这一点

您需要告诉
changePrice
函数它应该为哪个部分更改价格,因此您需要将调用更改为如下所示
changePrice(1100)
,其中1是部分,100是价格更改。然后您可以单独收集所有部分价格,并将其相加如下:

var displayPrice = document.getElementById("price");
var baseNum = 200;
displayPrice.innerHTML = baseNum;
var sections = {};

function changePrice(section,val){
    // add or update the section value
    sections[section] = val;
    // start with the base price
    var sum = baseNum;
    // loop over all the sections and add them to the base price
    for(var key in sections) {
      sum = sections[key] + sum;
    }
    displayPrice.innerHTML = sum;
}


功能显示价格(价格){
var val1=0;
对于(i=0;i

r15
R1 10
选择另一个号码:

R2 15
R2 20
你的总数是20卢比
可能的重复项您可以访问单选按钮的其他属性,而不仅仅是其值。您可能会发现
数据-
属性在此处很有用。
函数(changePrice){
可能没有执行您想要执行的操作。该语句声明了一个带有单个参数的匿名函数,
changePrice
,并在无效上下文中将其丢弃。