Javascript 如何从节点中删除多个属性?
我有这个图像元素:Javascript 如何从节点中删除多个属性?,javascript,nodes,Javascript,Nodes,我有这个图像元素: <img class="cat" src="img/tom.png" alt="Cat"> Jquery解决方案:像image.removeAttr('src alt')这样的空格分隔属性应该可以工作 编辑:使用纯Javascript,您可以使用removeAttribute在数组中循环:您可以创建一个函数,该函数包含要删除的元素和属性 函数删除属性(元素,…属性){ attrs.forEach(attr=>element.removeAttribute(at
<img class="cat" src="img/tom.png" alt="Cat">
Jquery解决方案:像
image.removeAttr('src alt')
这样的空格分隔属性应该可以工作
编辑:使用纯Javascript,您可以使用removeAttribute在数组中循环:您可以创建一个函数,该函数包含要删除的元素和属性
函数删除属性(元素,…属性){
attrs.forEach(attr=>element.removeAttribute(attr))
}
删除属性(document.querySelector('img'),'src','alt')
不确定这是否会让它变得更好,但您可能可以这样做:
['alt', 'src'].forEach(attribute => image.removeAttribute(attribute));
或者创建一个通用的删除属性函数:
const removeAttributes = (element, ...attributes) => attributes.forEach(attribute => element.removeAttribute(attribute));
你会这样称呼它:
removeAttributes(image, 'alt', 'src');
我是这样做的--
您可以设置它的
outerHTML
,但最好只调用removeAttribute
两次,或者创建自己的helper函数来接受多个参数这就是jQuery。我正在寻找一个基于JavaScript的解决方案。我们的想法完全一样:非常感谢你。这是最好的解决方案。根据记录,对内置对象进行变异是一种非常糟糕的做法。我认为您的代码将始终返回第4行,因为您正在对照“src | alt”检查token
您在第3行分配给标记的。==
表示标记必须是字符串,其内容必须是'
或'src | alt'
。
removeAttributes(image, 'alt', 'src');
(() => {
'use strict';
let token = 'src|alt';
if (token === '' || token === '{{1}}') { return; }
let tokens = token.split(/\s*\|\s*/);
let selector = 'img';
if (selector === '' || selector === 'img') {
selector = `[${tokens.join('],[')}]`;
}
let rmattr = () => {
let elements = document.querySelectorAll(selector);
for ( let element of elements ) {
for (let attr of tokens) {
element.removeAttribute(attr);
}
}
};
if (document.readyState === 'loading' || document.readyState === 'interactive' || document.readyState === 'complete') {
rmattr();
} else {
addEventListener('load', rmattr);
}
})();