JavaScript:如何简洁设置/移除布尔属性?有无原生实现?
解决方案
目前JavaScript并没有原生提供你想要的setBoolAttribute方法,但你可以通过扩展Element原型来实现这个功能,这样所有DOM元素(包括Web组件影子根内的元素)都能直接调用,无需导入模块。
实现自定义方法
给Element.prototype添加该方法的代码如下:
Element.prototype.setBoolAttribute = function(attrName, predicate) { predicate ? this.setAttribute(attrName, '') : this.removeAttribute(attrName); };
使用示例
之后就能按你期望的方式调用:
el.setBoolAttribute('data-foo', predicate);
注意事项
- 扩展原生原型时要注意命名冲突,确保
setBoolAttribute不会和未来的原生API或其他第三方库的方法重名。 - 该方法会作用于所有
Element实例,不管是普通DOM元素还是影子根内的元素,完全适配你的使用场景。
内容的提问来源于stack exchange,提问作者run_the_race
相关产品推荐
相关产品推荐

