如何将DOM元素的所有用户定义属性复制到数组中?我未成功通过测试获得["type", "onClick",'value','id']
请参阅以下代码
的js
var obj=document.getElementById('input')/*.attributes*/,
array=[],
index=0;
for(array[index++] in obj);
console.log(array);
HTML
<input type='button' onClick="Start()" id='input' value="Start"/>
答案 0 :(得分:1)
这些属性可在attributes
NamedNodeMap
上找到;您使用[]
表示法访问每一个,并且有一个length
。
所以:
var array = Array.prototype.map.call(
document.getElementById('input').attributes,
function(attr) {
// Use nodeName for the name, nodeValue for the value
return attr.nodeName;
});
snippet.log(array.join(", "));
<input type='button' onClick="Start()" id='input' value="Start"/>
<!-- Script provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="https://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>
答案 1 :(得分:1)
Get all Attributes from a HTML element with Javascript/jQuery
将它与你的JS一起使用,你得到:
var obj=document.getElementById('input')/*.attributes*/,
arr=[],
index=0;
for (var i = 0, atts = obj.attributes, n = atts.length; i < n; i++){
arr.push(atts[i].nodeName);
}
console.log(arr);
答案 2 :(得分:1)
.slice
将attributes
属性转换为数组 DOM节点的attributes
属性是NamedNodeMap
,它是一个类似于数组的对象。
类似于Array的对象是一个具有length
属性并且其属性名称被枚举的对象,但是具有其自己的方法并且不从Array.prototype
继承
The slice
method can be used to convert Array-like objects to a new Array
var obj = document.getElementById('input').attributes,
array = Array.prototype.slice.call(obj);
console.log(array);
<input type='button' onClick="Start()" id='input' value="Start"/>