Javascript DOM.querySelector()空问题
我用纯JavaScript编写代码,有很多场景我会使用Javascript DOM.querySelector()空问题,javascript,Javascript,我用纯JavaScript编写代码,有很多场景我会使用querySelector()方法,我多次遇到类似这样的问题 “未捕获的TypeError:无法读取以下代码的null属性'classList'” document.querySelector('.tab.active').classList.remove('active'); /**选项卡当时不可用**/ 在Jquery$('.tab.active').removeClass('active')才会运行 我希望在JavaScript中实现
querySelector()
方法,我多次遇到类似这样的问题
“未捕获的TypeError:无法读取以下代码的null属性'classList'”
document.querySelector('.tab.active').classList.remove('active');
/**选项卡当时不可用**/
在Jquery$('.tab.active').removeClass('active')仅当元素可用且没有引发错误时,代码>才会运行
我希望在JavaScript中实现类似的行为。请提供你的想法
我不愿意为我正在做的每个DOM操作编写三行代码,寻找像Jquery这样的一行代码
var activeTab = document.querySelector('.tab.active');
if(activeTab !== 'null' ){
activeTab.classList.remove('active');
}
正如您最初所做的那样,显式地检查代码中元素的存在性肯定是您可以做的最清晰的方法,但是如果您确实不想做,您可以创建自己的函数,如果没有找到元素,则返回一个对象,其方法不做任何事情。例如:
const customQS=selector=>(
文档查询选择器(选择器)
|| {
类列表:{
删除:()=>void 0
}
}
);
customQS('.tab.active').classList.remove('active');
log('done,no error')代码>var el=document.querySelector(..);如果(el)el.classList.remove('fdsafds')代码>这就是jQuery在幕后所做的,它将空结果转换为空jQuery对象。如果您不想使用jQuery,您也必须这样做。您可以使用三元运算符来实现单行解决方案<代码>文档.querySelector('.tab.active')1=='null?document.querySelector('.tab.active').classList.remove('active'):''代码>能否给出更一般的属性,请不要仅限于“classList”属性您每次都必须实际创建一个元素,或者创建一个包含所有可能属性(及其方法)的对象。