无法使用 javascript 更改 css

Posted

技术标签:

【中文标题】无法使用 javascript 更改 css【英文标题】:Unable to change css using javascript 【发布时间】:2018-12-12 02:49:48 【问题描述】:

在 handsontable 的 _afterOnCellMouseOver 函数中,当我将鼠标悬停在列标题上时,我试图更改它们的 css 颜色属性。

_afterOnCellMouseOver(e, coords, td) 
    if (coords.row === -1 &&& this.hot) 
        let contElem = document.getElementById(`cont$varId`);
        contElem.style.color = "purple";
    
div.hotColHeaderContainer 
    display: flex;
    flex-direction: column;
    justify-content: center;
    overflow: visible;
    position: relative;
<div class="$styles.hotColHeaderContainer" id=cont$varId> </div>

我的 div.hotColHeaderContainer 包含在一个 scss 文件中,我的 div 包含在一个用于生成列标题的函数中。 varId 是根据列标题中使用的变量名称更改名称的变量。为什么我无法从 _afterOnCellMouseOver 中更改样式?我对 javascript、handsontable 和 css 非常陌生。

【问题讨论】:

不用js也可以,用css hover属性 为什么<div class="$styles.hotColHeaderContainer" id=cont$varId> </div> 应该有效?这在纯 html 上是不可能的。你在使用任何框架吗? 正如@Rumesh 所说,确实为过度行为放弃了 JS。通过使用 :hover 选择器w3schools.com/cs-s-ref/sel_hover.asp 使用完整的 CSS 解决方案 ***.com/questions/848840/… JavaScript 解决方案根本不可能吗?悬停效果很好,但我只是好奇。 【参考方案1】:

您可以只使用 css hover 选择器。以下片段:

div.hotColHeaderContainer 
    display: flex;
    flex-direction: column;
    justify-content: center;
    overflow: visible;
    position: relative;

div.hotColHeaderContainer:hover 
    color: purple
<div class='hotColHeaderContainer'>Hello</div>

【讨论】:

以上是关于无法使用 javascript 更改 css的主要内容,如果未能解决你的问题,请参考以下文章

在 JavaScript 中更改 HTML 元素的样式并暂时禁用其 CSS 转换无法可靠运行 [重复]

无法在javascript反应中更改警报消息的颜色

悬停文本使 Div 更改颜色 - CSS

从javascript更改css类[重复]

无法从distpack文件夹中的webpack生成的index.html引用javascript和css文件

悬停一个元素,然后更改另一个元素(不使用 Javascript)