【发布时间】:2021-05-21 11:54:18
【问题描述】:
我正在尝试创建一个包含 4 个元素 A B C D(每个值 = 1)和一个元素 E(值 = 3)的清单,以在用户选择此选项时创建“折扣”。该值用作乘数以根据其他选定的标准创建报价。所以我需要将其设为 A+B+C+D=4 但如果我按 E 他们都取消选中并且值变为 3.. 但是.. .
使用该功能,我设法取消选中这些框,但该值似乎不会重置?
function totalIt() {
var input = document.getElementsByName("type");
var multiplier = 0;
for (var i = 0; i < input.length; i++) {
if (input[i].checked) {
multiplier += parseFloat(input[i].value);
}
}
$('#family').on('click', function() {
$('.font').not(this).removeAttr('checked')
var multiplier = 3;
});
console.log(multiplier)
};
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<meta name="description" content="" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script src="http://code.jquery.com/ui/1.9.2/jquery-ui.js"></script>
<script type="text/javascript" src="scroll.js"></script>
<style>
.column2 {
display: flex;
flex-wrap: wrap;
}
.theForm {
width: 30%;
}
</style>
</head>
<!-- BODY -->
<body>
<form action="" class="theForm">
<fieldset>
<legend>
SELECT
</legend>
<label><br>
<input class="font"name="type" value="1" type="checkbox" id="p1" onclick="totalIt()"/>
Thin
</label>
<label><br>
<input class="font"name="type" value="1" type="checkbox" id="p2" onclick="totalIt()"/>
Regular
</label>
<label><br>
<input class="font"name="type" value="1" type="checkbox" id="p3" onclick="totalIt()"/>
Medium
</label>
<label><br>
<input class="font"name="type" value="1" type="checkbox" id="p4" onclick="totalIt()"/>
Bold
</label>
<label><br>
<input id="family" name="type" value="3" type="checkbox" id="p5" onclick="totalIt()"/>
Family
</label>
</fieldset>
</form>
</body>
</html>
【问题讨论】:
-
var multiplier = 3;删除var- 您正在创建一个新变量而不是更新外部变量 -
离题:您的
$('#family').on('click'位于 inside totalIt() 中,因此每次总计时都会获得多个点击处理程序。没有真正的效果,因为它确实将它设置为乘数,但最好保持良好的习惯
标签: javascript html jquery checkbox selection