javascript - Sum Checked 单选按钮值不起作用
问题描述
我目前尝试对单选按钮选择的值求和,但我无法使其工作,我错过了什么?
$(document).ready(function() {
function calcscore(){
var score = 0;
var ele = document.getElementsByClassName("r1");
for(i = 0; i < ele.length; i++) {
if(ele[i].checked) {
score += parseInt(ele[i].value);
}
}
$("input[name=sum]").val(score)
}
function change(){
$("val.(score)").change(function(){
calcscore()
});
};
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form>
<label class="radio-inline">
<input class="r1" type="radio" name="a2" value="9" />Option 1
</label>
<label class="radio-inline">
<input class="r1" type="radio" name="a2" value="18" />Option 2
</label>
<label class="radio-inline">
<input class="r1" type="radio" name="a2" value="10" />Option 3
</label>
<br />
<label class="radio-inline">
<input class="r1" type="radio" name="a3" value="10" />Option 1
</label>
<label class="radio-inline">
<input class="r1" type="radio" name="a3" value="10" />Option 2
</label>
<label class="radio-inline">
<input class="r1" type="radio" name="a3" value="10" />Option 3
</label>
<br />
<input type="text" name="sum" />
</form>
如果您能找到问题所在,您能否给我每行的详细信息,以便我从中学习?
谢谢
解决方案
$("val.(score)").
不是您在更改功能上调用的有效元素。
我已经分配了一个类.score
,或者您也可以使用.r1
所有将在change
函数上调用的输入类型
还可以考虑使用 totaljQuery
或 Pure JS
not Ideal 来混合两者以避免混淆。
我在jQuery
下面添加了两个唯一的解决方案,您可以选择最适合您的解决方案。
根据您的代码混合 JS 和 jQuery
运行下面的 Snippet 以查看它的工作情况。
function calcscore() {
var score = 0;
var ele = document.getElementsByClassName("r1");
for (i = 0; i < ele.length; i++) {
if (ele[i].checked) {
score += parseInt(ele[i].value);
}
}
$("input[name=sum]").val(score)
}
function change() {
$(".score").on('change', function() {
calcscore()
});
}
change()
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form>
<label class="radio-inline">
<input class="r1 score" type="radio" name="a2" value="9">Option 1
</label>
<label class="radio-inline">
<input class="r1 score" type="radio" name="a2" value="18">Option 2
</label>
<label class="radio-inline">
<input class="r1 score" type="radio" name="a2" value="10">Option 3
</label>
<br>
<label class="radio-inline">
<input class="r1 score" type="radio" name="a3" value="10">Option 1
</label>
<label class="radio-inline">
<input class="r1 score" type="radio" name="a3" value="10">Option 2
</label>
<label class="radio-inline">
<input class="r1 score" type="radio" name="a3" onchange=() value="10">Option 3
</label>
<br>
<input type="text" name="sum" />
</form>
仅使用 Jquery 和.each()函数
如果您只想通过 jQuery 执行此操作。这是工作代码。
我们可以使用.r1
class 和 use:checked
来检查哪个元素被检查并通过 data 获取它的值.each
并以这种方式进行总结。
function calcscore(_this) {
var score = 0;
$('.r1:checked').each(function(index, data) {
score += parseInt(data.value);
})
$("input[name=sum]").val(score)
}
function change() {
$(".score").on('change', function() {
calcscore()
});
}
change()
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form>
<label class="radio-inline">
<input class="r1 score" type="radio" name="a2" value="9">Option 1
</label>
<label class="radio-inline">
<input class="r1 score" type="radio" name="a2" value="18">Option 2
</label>
<label class="radio-inline">
<input class="r1 score" type="radio" name="a2" value="10">Option 3
</label>
<br>
<label class="radio-inline">
<input class="r1 score" type="radio" name="a3" value="10">Option 1
</label>
<label class="radio-inline">
<input class="r1 score" type="radio" name="a3" value="10">Option 2
</label>
<label class="radio-inline">
<input class="r1 score" type="radio" name="a3" value="10">Option 3
</label>
<br>
<input type="text" name="sum" />
</form>
推荐阅读
- node.js - 尽管服务帐户的角色正确,但机密管理员访问被拒绝
- c++ - 在带有 C++ 文件的 ios 插件上找不到“字符串”文件
- python - win32com 从 * .exe 或 * .py 运行时有不同的行为
- sql-server - 使用自制软件安装的驱动程序版本
- python - 尝试发布时出现服务器错误,但在删除/获取/放入 django + vue js 时没有
- android-recyclerview - Xamarin.Android如何记住recyclerview中项目的位置
- python - 机器学习 模型过拟合
- amazon-web-services - 获得使用 2-Protocol Hours 账单。有人知道 AWS 中的这些费用吗?
- angular - 角度 - 如何使用开关将输入字段更改为只读
- flutter - 在 Build 方法中使用 FutureBuilder