javascript - onclick 事件在元素被点击之前触发
问题描述
这是我与onclick
事件侦听器的代码。
function makeSizer(size) {
alert(size)
document.body.style.fontSize = size + 'px';
}
document.getElementById('size-12').onclick = makeSizer(14);
document.getElementById('size-14').onclick = makeSizer(16);
body {
font-family: Helvetica, Arial, sans-serif;
font-size: 12px;
}
<p>Some paragraph text</p>
<a href="#" id="size-12">12</a>
<a href="#" id="size-14">14</a>
但是,我不知道为什么一旦加载浏览器,就会立即触发 clicked 事件,或者在我实际点击链接之前触发。你能帮我解释一下吗。
我得到的一种解决方案是通过返回一个函数来使用如下所示的闭包。我想知道你还有没有其他人?
function makeSizer(size) {
return function (){
alert(size)
document.body.style.fontSize = size + 'px';
}
}
顺便说一句,这里可能有重复。但是,我正在寻求比调试更一般的解释/讨论。
谢谢你。
解决方案
尝试这个:
function makeSizer(size) {
alert(size)
document.body.style.fontSize = size + 'px';
}
document.getElementById('size-12').onclick = function() {
makeSizer(14);
}
document.getElementById('size-14').onclick = {
makeSizer(16);
}
推荐阅读
- routes - 或工具路由访问顺序
- neo4j - 使用定期迭代删除不起作用
- jquery - 无法使用 ajax 请求发送 json
- powershell - 导入 virtualmachinemanager 模块后 Stop-Job 成为别名
- javascript - NodeJS 需要异步任务
- docker - 无法在 Kubernetes 上启动 Spark
- flutter - 没有为类型“列表”定义吸气剂“语言代码”
' - image-processing - 光流可以应用于具有大时间间隙的 IR(红外热)图像吗?
- facebook - gclid 和 fbclid 同时
- android - MotionLayout 标题在第一次向上滑动时展开