javascript - 单击 HTML 元素 A 并使用纯 JavaScript 在 B 上添加类

标签 javascript html css class

我看不出我做错了什么..有人可以帮忙吗?

JavaScript:

function toggleMainNav() {
        var navLink = document.getElementsByClassName('nav_link')[0];
        var mainNav = navLink.nextSibling;
        if ( mainNav.className.match(/(?:^|\s)inactive(?!\S)/) ){
            mainNav.className = 'active';
        } else{
            mainNav.className = 'inactive';
        }
    }

    document.getElementsByClassName('nav_link')[0].addEventListener( 'click' , toggleMainNav );

这是 HTML:

<a class="nav_link">☰ Menu</a>
<ul class="inactive">
</ul>

最佳答案

nextSibling 将是一个包含空格的文本节点。扫描直到获得 nodeType === 1 或使用 nextElementSibling(但请检查您的目标浏览器是否支持它)。


旁注:getElementsByClassNamequerySelector/querySelectorAall 的支持更差(例如,IE8 有后者但没有前者),所以您可能会考虑改用它们。

旁注 2:IE8 也没有 addEventListener

旁注 3:如果您通过 addEventListener 连接您的处理程序,在处理程序中 this 将已经是第一个 nav_link,因此您无需再次查找。

旁注 4:如果您不将第三个参数提供给 addEventListener(它过去不是可选的),一些较旧的浏览器将会失败。为了广泛兼容,请务必在末尾包含 false

关于javascript - 单击 HTML 元素 A 并使用纯 JavaScript 在 B 上添加类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23889394/

相关文章:

javascript - 类型错误 : Cannot set property 'data_id' of undefined

javascript - 为 Couchbase 生成唯一的 UInt32 ID

html - 下拉菜单隐藏在页面内容后面?

javascript - Vuetify 中的滚动列表

html - 如何使用显示 : table? 放置此 div 滚动

css - 如果在显示表内,预宽度太宽

javascript - 如何使用 reduce 函数对对象进行分组 javascript

css - 为什么我的部门在那里?

html - 单击父元素选择子元素的内容

javascript - 谷歌地图标记事件