【发布时间】:2020-03-09 13:37:34
【问题描述】:
我正在使用以下函数在 TAG 上设置 CSS 样式:
function setStyle (styles = {}, tag){
let key;
for (key in styles) {
if (!styles.hasOwnProperty(key))
continue;
tag.style[key] = styles[key];
}
return tag;
}
我创建了另一个函数,它将在鼠标悬停时应用新的 CSS 样式并在鼠标移出时恢复为旧 CSS:
function hoverCss(styleSet = {}, tag) {
const oldCss = tag.style;
tag.onmouseover = () => {
// console.info('APPLY NEW CSS');
setStyle(styleSet, tag);
};
tag.onmouseleave = () => {
// console.info('RESTORE OLD CSS');
setStyle(oldCss, tag);
};
return tag;
}
当我执行上面的代码时,新的 CSS 在鼠标悬停时应用,但旧的 CSS 在鼠标离开时没有应用回来。请提供此错误的解决方案。
编辑
调用函数的其余代码如下所示:
const tag = document.getElementById('someId');
hoverCss({color:'red'}, tag);
感谢和问候
【问题讨论】:
-
为什么不只拥有两个不同的类并在元素上切换应用的类?这种方式似乎更复杂,效率更低。
-
您能否提供更多详细信息,例如新 css 和旧 css 的样式对象以及何时调用此方法
hoverCss -
@JeremyHarris,我不想使用 CSS 或任何 jQuery,只使用纯 JavaScript
-
@AhmedKesha,请参阅编辑。谢谢
-
@MateusMartins,同样。打电话没有错。我可以通过 tag.onmouseover 和 tag.onmouseleave 在控制台日志上打印消息。
标签: javascript css dom-events