检查元素是否具有给定数组的任何属性

时间:2015-04-23 16:19:47

标签: javascript html5 attributes

如果我有一个属性disabled,并且我想在运行函数之前检查元素是否具有此属性,我可以使用

if element.hasAttribute('disabled')

如果我有几个与同一功能相关的属性,例如

attributes = [disabled, something, another]

如何使用if element.hasAttribute('attribute')检查数组中的任何属性?

更新

实际上我的数组中只有两个项目,所以我做了

if el.hasAttribute('noink') || el.hasAttribute('disabled')

下面的回答也是可行的,如果我有一个更大的阵列,我会使用它们。

4 个答案:

答案 0 :(得分:2)

功能如何

function hasAttributes(element, arr) {
    return [].slice.call(element.attributes).some(function(attr) {
        return arr.indexOf(attr.name) !== -1;
    });
}

用作

var attributes = ['disabled', 'something', 'another'];
var element    = document.getElementById('some_id');

var has_attr   = hasAttributes(element, attributes);

FIDDLE

答案 1 :(得分:0)

申请循环:

  var isAttr=false;
    for(key in attributes){
        if(element.hasAttribute('attribute')){
        console.log('the attribute'+attributes[key]+ 'is attach to element');
        isAttr=true;
       }
    }
 console.log('element has any of array element as attribute:'+isAttr)

答案 2 :(得分:0)

更紧凑......

function hasAttributes(e, l){
    var t = [];
    for(var i in l){
        t.push(e.attributes[l[i]] !== undefined);
    }
    return t;
}

使用:

var myList = ["disabled", "something", "another"];
var myElement = document.getElementById("test");
console.log(hasAttributes(myElement, myList));

或者对于所有情况或任何情况都是假的:

function getAttributes(e, l){
    var t = [];
    for(var i in l){
        if(e.attributes[l[i]] === undefined){
            return false;
        }
    }
    return true;
}

答案 3 :(得分:0)

<强>更新

实际上我的数组中只有两个项目,所以我做了

if el.hasAttribute('noink') || el.hasAttribute('disabled')

下面的回答也是可行的,如果我有一个更大的阵列,我会使用它们。