Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从节点中删除多个属性?_Javascript_Nodes - Fatal编程技术网

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);
        }
})();