如何从节点中删除多个属性?

时间:2018-05-26 10:34:02

标签: javascript nodes

我有这个图像元素:

<img class="cat" src="img/tom.png" alt="Cat">

我想立即删除srcalt属性 我期望removeAttribute()方法采用多个参数,但事实并非如此。

除了这个重复的代码之外,还有另一种方法吗?

image.removeAttribute('src');
image.removeAttribute('alt');

4 个答案:

答案 0 :(得分:2)

你可以创建一个带有你想要移除的元素和属性的函数。

&#13;
&#13;
function removeAttributes(element, ...attrs) {
  attrs.forEach(attr => element.removeAttribute(attr))
}

removeAttributes(document.querySelector('img'), 'src', 'alt')
&#13;
<img class="cat" src="img/tom.png" alt="Cat">
&#13;
&#13;
&#13;

如果你想在DOM元素上调用它,你可以扩展Element原型。

&#13;
&#13;
Element.prototype.removeAttributes = function(...attrs) {
  attrs.forEach(attr => this.removeAttribute(attr))
}

document.querySelector('img').removeAttributes('src', 'alt')
&#13;
<img class="cat" src="img/tom.png" alt="Cat">
&#13;
&#13;
&#13;

答案 1 :(得分:2)

不确定它会让它变得更好但你可能会做这样的事情:

['alt', 'src'].forEach(attribute => image.removeAttribute(attribute));

或创建一般删除属性函数:

const removeAttributes = (element, ...attributes) => attributes.forEach(attribute => element.removeAttribute(attribute));

你会这样称呼:

removeAttributes(image, 'alt', 'src');

答案 2 :(得分:0)

Jquery解决方案: image.removeAttr('src alt')等空格分隔属性应该有效。

编辑:使用纯Javascript,您可以使用removeAttribute循环遍历数组:

答案 3 :(得分:0)

这就是我的做法-

(() => {
        'use strict';
        let token = 'src|alt';
        if (token === '' || token === 'import altair as alt
from vega_datasets import data
cars = data.cars()

title = alt.Chart(
    {"values": [{"text": "The Title"}]}
).mark_text(size=20).encode(
    text="text:N"
)

subtitle = alt.Chart(
    {"values": [{"text": "Subtitle"}]}
).mark_text(size=14).encode(
    text="text:N"
)

chart = alt.Chart(cars).mark_point().encode(
  x='Horsepower',
  y='Miles_per_Gallon',
  color='Origin'
)

alt.vconcat(
    title,
    subtitle,
    chart
).configure_view(
    stroke=None
).configure_concat(
    spacing=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);
        }
})();