You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在addEventListener中设置opacity样式及对应报错解决

错误原因
  • document.getElementsByClassName() 方法返回的是动态HTMLCollection类数组集合,即便页面中该类名只有1个匹配元素,返回结果也是包裹该元素的集合,集合本身不存在style属性,直接访问mainDiv.style会得到undefined,对其赋值opacity属性就会触发你遇到的类型错误。
解决方案

场景1:对应类名仅存在1个需要修改的元素

直接取集合的第一个元素即可,你可以选择两种修改方式:

方式1:取集合索引0的元素

// 变量赋值时追加[0]取第一个匹配元素
const mainDiv = document.getElementsByClassName('home-bg-image')[0];
const homeMainDiv = document.getElementsByClassName('home-bg')[0];
const homeDiv = document.getElementById('home-1');

homeDiv.addEventListener('mouseenter', e => {
    mainDiv.style.opacity = '0';
    homeMainDiv.style.opacity = '1';
    console.log('Working !!!')
});

方式2:替换为querySelector方法获取单个元素

document.querySelector()会直接返回第一个匹配的DOM元素,不需要额外取索引:

const mainDiv = document.querySelector('.home-bg-image');
const homeMainDiv = document.querySelector('.home-bg');
const homeDiv = document.getElementById('home-1');

homeDiv.addEventListener('mouseenter', e => {
    mainDiv.style.opacity = '0';
    homeMainDiv.style.opacity = '1';
    console.log('Working !!!')
});

场景2:对应类名的所有元素都需要修改样式

遍历整个集合逐个设置属性即可:

const mainDivList = document.getElementsByClassName('home-bg-image');
const homeMainDivList = document.getElementsByClassName('home-bg');
const homeDiv = document.getElementById('home-1');

homeDiv.addEventListener('mouseenter', e => {
    // 遍历所有匹配的home-bg-image元素
    for (const el of mainDivList) {
        el.style.opacity = '0';
    }
    // 遍历所有匹配的home-bg元素
    for (const el of homeMainDivList) {
        el.style.opacity = '1';
    }
    console.log('Working !!!')
});

内容的提问来源于stack exchange,提问作者Ahsan Shaikh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 06:15:03