javascript - 例如,当我选择明矾时,它会存储它,然后当我选择温和金属时,它会显示两个值(在完成所有计算之后)
问题描述
sum = {
"al": 12,
"mm": 20,
"hm": 30,
}
window.addEventListener("load", function() { // when page loads
document.getElementById("tensile").addEventListener("click", function(e) {
var tgt = e.target; // what was clicked
if (tgt.name == "size") { // is it one of the radios?
var val = tgt.value; // save the value once (DRY principle)
$('.ck').click(function(){
var a = parseFloat($('.n1').val());
var b = parseFloat($('.n2').val());
var z = 3.14;
var c = a * b * z * sum[val];
alert(c);
})
}
})
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
Diameter<input type="text" class="n1" /><br />
Metal Thickness<input type="text" class="n2" /><br />
<h3> Select Metal </h3>
<form id="tensile">
<input type="radio" name="size" value="al">Alum
<br>
<input type="radio" name="size" value="mm">Mild Metal<br>
<input type="radio" name="size" value="hm"> Heavy Metal<br>
<br>
</form>
<hr />
<input type="button" value="Add" class="ck" />
解决方案
改变这个,它会工作:
你得到前一个计算和第二个计算的原因是因为每次单击单选按钮时都会创建一个新event listener
按钮add
,所以当你单击它时,两个处理程序正在运行,这就是你得到 2 个警报的原因。拉出按钮的事件侦听add
器,您将只有一个处理程序:
sum = {
"al": 12,
"mm": 20,
"hm": 30,
}
let val;
window.addEventListener("load", function() { // when page loads
document.getElementById("tensile").addEventListener("click", function(e) {
var tgt = e.target; // what was clicked
if (tgt.name == "size") { // is it one of the radios?
val = tgt.value; // save the value once (DRY principle)
}
})
$('.ck').click(function() {
var a = parseFloat($('.n1').val());
var b = parseFloat($('.n2').val());
var z = 3.14;
var c = a * b * z * sum[val];
alert(c);
})
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
Diameter<input type="text" class="n1" /><br /> Metal Thickness<input type="text" class="n2" /><br />
<h3> Select Metal </h3>
<form id="tensile">
<input type="radio" name="size" value="al">Alum
<br>
<input type="radio" name="size" value="mm">Mild Metal<br>
<input type="radio" name="size" value="hm"> Heavy Metal<br>
<br>
</form>
<hr />
<input type="button" value="Add" class="ck" />
推荐阅读
- numpy - 在 for 循环中将 numpy 数组添加到 numpy 数组
- java - 以正确的方式从实时数据库中检索大量数据
- android - 将 IR 扫描码转换为图案
- file-upload - Chrome扩展截图上传503错误
- javascript - 使用 `Proxy` 对象或 getter/setter 在对象更改时中断/暂停 JavaScript (DevTools)
- python - 没有空格时如何用分号分隔 2 个完整名称(并排除以“Mc”开头的名称
- python - Python - 在字典中搜索
- python - 无法访问while循环
- java - 为 JWT 验证生成公钥实例
- javascript - JavaScript 类中的“this”为什么会抛出这个错误?