jQuery代码转换为原生JavaScript后无法运行,求错误排查
改写代码存在的错误如下
- 方法名拼写错误:
document.getElementByClassName应为document.getElementsByClassName,注意 Elements 是复数形式,该方法返回类数组结构的HTMLCollection集合,无法直接对整个集合绑定事件,需要遍历每个元素单独绑定。 - 事件绑定逻辑错误:原生JS不存在
.click(回调函数)绑定事件监听的用法,该写法是jQuery专属,原生需要调用addEventListener('click', 回调函数)实现点击事件绑定。 - 属性获取方法错误:原生DOM元素没有jQuery的
.attr()方法,获取元素id可以直接读取.id属性,也可以调用.getAttribute('id')方法实现。 - 误用jQuery语法:代码中仍保留了jQuery专属的
$()选择器,原生通过id获取元素应使用document.getElementById(元素id),不需要拼接#前缀。 - 自执行函数未触发:代码定义了闭包但末尾缺少执行括号
(),导致闭包内的代码永远不会运行。
正确改写后的代码
(function () { // 获取所有关闭按钮元素,遍历绑定点击事件 const closeButtons = document.getElementsByClassName("afc_close_content"); for (let btn of closeButtons) { btn.addEventListener('click', function() { const targetId = this.closest('div').id; document.getElementById(targetId).style.display = "none"; }); } })();
内容的提问来源于stack exchange,提问作者Tushar Korat
相关产品推荐
相关产品推荐

