javascript - 获取被点击的元素onclick

标签 javascript onclick

<分区>

var submenus = document.getElementsByClassName("submenu");
for (var i = 0; i < submenus.length; i++) {
    submenus[i].onclick = function() {
        toggle(submenus[i].nextSibling);
        return false;
    }
}

function toggle(el) {
    if (el.style.display == 'block') {
        el.style.display = 'none';
    } else {
        el.style.display = 'block';
    }
}

导致错误:TypeError: submenus[i] is undefined

我假设 submenus[i] 不在函数的范围内。如何让元素被点击以便切换它的下一个兄弟元素?

最佳答案

var submenus = document.getElementsByClassName("submenu");
for (var i = 0; i < submenus.length; i++) {
    submenus[i].onclick = function() {
        toggle( this.nextSibling);
        return false;
    }
}

在这样的事件处理程序中,this 关键字绑定(bind)到触发事件的元素。因此,在您的示例中,您可以使用 this 来引用您的子菜单项,从而引用其兄弟项。

有关更多信息,请参阅@FelixKling 提供的链接:http://quirksmode.org/js/this.html

关于javascript - 获取被点击的元素onclick,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16897565/

相关文章:

javascript - Android webview 点击

javascript - 为什么在 Angular TypeScript 中使用 onclick 事件必须给它一个 void 类型?

php - 如何在 ajax 调用中操作 URL?

JavaScript 原型(prototype)属性

javascript - 使用 jquery 激活 onchange

javascript - 想找到一种在 javaScript 中还原 'onclick' 的方法

javascript - 是否可以使用 javascript 中的自定义事件重新创建 "onClick event"?

javascript - 如何从同一个外部 javascript 文件访问多个 html 文件元素

javascript - 将 onclick 事件应用于页面加载时不存在的元素

Javascript 获取页面源(服务器端)