JavaScript能否根据元素display属性条件添加CSS类?
可以实现,你原本的逻辑是对的,但写法存在几处错误需要修正:
- 直接访问
$invoiceTable.display无法获取元素的display属性:jQuery封装的DOM对象不能直接读取原生style属性,需要用.css()方法读取样式,或转成原生DOM元素操作 - 三元表达式中的
=是赋值运算符,判断相等需要用===严格等于运算符 block是字符串值,需要用引号包裹,否则会被识别为未定义的变量触发报错
jQuery 实现写法(你当前用的addClass属于jQuery语法)
// $.css('display') 可以直接获取元素最终生效的display属性,无需是行内设置的样式 $invoiceTable.addClass($invoiceTable.css('display') === 'block' ? 'firstClass' : 'secondClass');
如果要避免元素同时存在两个目标类,建议先移除旧类再添加新类,逻辑更稳妥:
$invoiceTable .removeClass('firstClass secondClass') .addClass($invoiceTable.css('display') === 'block' ? 'firstClass' : 'secondClass');
原生JavaScript实现写法
const invoiceTable = document.querySelector('替换为你的元素选择器'); // getComputedStyle 可以读取元素最终生效的所有样式 const displayValue = window.getComputedStyle(invoiceTable).display; invoiceTable.classList.add(displayValue === 'block' ? 'firstClass' : 'secondClass');
内容的提问来源于stack exchange,提问作者Quinn Slattery
相关产品推荐
相关产品推荐

