为了账号安全,请及时绑定邮箱和手机立即绑定

在 JavaScript 中鼠标移出时恢复为旧 CSS

在 JavaScript 中鼠标移出时恢复为旧 CSS

慕桂英546537 2022-05-14 14:57:06
我正在使用以下函数在 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);感谢和问候
查看完整描述

3 回答

?
哈士奇WWW

TA贡献1799条经验 获得超6个赞

认为这最好用纯 css 实现


.element {

  // Add your element styles here

}


.element:hover {

 // Add styles here to be applied when element is hovered over

}


查看完整回答
反对 回复 2022-05-14
?
HUWWW

TA贡献1874条经验 获得超12个赞

尝试使用此语法


target.addEventListener('mouseleave', () => {

  setStyle(oldCss, tag);

});


查看完整回答
反对 回复 2022-05-14
?
当年话下

TA贡献1890条经验 获得超9个赞

这种行为是因为 js 威胁每个引用的对象,所以,当你这样做时const oldCss = tag.styleoldCss对象指向相同的内存地址tag.style

tag.style因此,当您更改它的某些属性时oldCss,const 声明只是说您不能更改 oldCss 值,而不是它的孩子

您必须const oldCss = JSON.parse(JSON.stringify(tag.style))避免引用行为


查看完整回答
反对 回复 2022-05-14
  • 3 回答
  • 0 关注
  • 368 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号