首页 > 解决方案 > 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';
    }       
}

顺便说一句,这里可能有重复。但是,我正在寻求比调试更一般的解释/讨论。

谢谢你。

标签: javascript

解决方案


尝试这个:

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);
}

推荐阅读