javascript - 点击 eventListener 只运行一次
问题描述
你能解释一下为什么这个简单网页上的按钮只运行一次吗?为什么重复点击不起作用?这与我将结果添加到页面正文的方式有关吗?我可以通过创建一个新的 Div 并添加答案来让它工作,但我只想了解这段代码不起作用的原因?
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
div {
margin: 0.6rem;
padding: 0.4rem;
}
</style>
</head>
<body>
<div id="percentage">
<input type="number" id="part">
<input type="number" id="whole">
<button id="calculatePercentage">Calculate percentage</button>
<div id="answerPercentage"></div>
</div>
<script>
function howManyPercent(part, whole) {
return part / whole * 100;
}
document.getElementById("calculatePercentage").addEventListener("click", function () {
let partInput = document.getElementById("part");
let wholeInput = document.getElementById("whole");
let myAnswer = howManyPercent(partInput.value, wholeInput.value);
document.body.innerHTML += myAnswer + '%';
})
</script>
</body>
</html>
解决方案
这是您的代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
div {
margin: 0.6rem;
padding: 0.4rem;
}
</style>
</head>
<body>
<div id="percentage">
<input type="number" id="part">
<input type="number" id="whole">
<button id="calculatePercentage">Calculate percentage</button>
<div id="answerPercentage"></div>
</div>
<script>
function howManyPercent(part, whole) {
return part / whole * 100;
}
document.getElementById("calculatePercentage").addEventListener("click", function () {
let partInput = document.getElementById("part");
let wholeInput = document.getElementById("whole");
let myAnswer = howManyPercent(partInput.value, wholeInput.value);
document.body.innerHTML += myAnswer + '%';
})
</script>
</body>
</html>
因此,我将3
and3
放入每个输入中,并100%
在输入下方重新渲染。
但是发生的情况是您的代码document.body.innerHTML += myAnswer + '%';
正在使用新的 html 从头开始重写整个正文,因此您在旧的 html dom 元素上运行的任何 javascript 现在都消失了。
What I would recommend instead is to use your <div id="answerPercentage"></div>
instead:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
div {
margin: 0.6rem;
padding: 0.4rem;
}
</style>
</head>
<body>
<div id="percentage">
<input type="number" id="part">
<input type="number" id="whole">
<button id="calculatePercentage">Calculate percentage</button>
<div id="answerPercentage"></div>
</div>
<script>
function howManyPercent(part, whole) {
return part / whole * 100;
}
document.getElementById("calculatePercentage").addEventListener("click", function () {
let partInput = document.getElementById("part");
let wholeInput = document.getElementById("whole");
let myAnswer = howManyPercent(partInput.value, wholeInput.value);
document.getElementById('answerPercentage').innerHTML = myAnswer + '%';
})
</script>
</body>
</html>
推荐阅读
- java - Java ByteBuffer.wrap(byte[]),如果 byte[] 以小端序排列,字节序会发生什么变化
- javascript - 承诺链中的所有内容都必须是承诺吗?
- python-3.x - 如何在 VS 代码中打开输出窗口的自动换行?
- office365 - 使用 Redemption MAPITable 的用户 (PR_DISPLAT_TYPE) DisplayType
- chart.js - 在饼图中添加额外标签
- python-3.x - Python pandas计算数据帧中2个时间戳列之间的差异,不包括周末(以秒为单位)
- javascript - javascript函数和属性
- django - Django 删除主对象删除上的所有 M2M 相关对象
- javascript - 使用 GET 请求动态填充表
- python - Numpy Matmul 导致错误说模块没有属性 matmul