如何使用html标签的所有属性创建一个Object?

时间:2014-06-10 19:45:33

标签: javascript html object dom

这是我的测试代码,从我构建的表单中提取:

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<script>
function ini(){
    console.log("Element dump:");
    var elem = document.querySelector('form[name="form"] input[name="dataNasc"]');
    for(var i in elem){
        console.log(i+":"+elem[i]);
    }
    console.log("Form element dump:");
    var Form = document.forms["form"];
    var input = Form.dataNasc;
    for(var i in input){
        console.log(i+":"+input[i]);
    }
}
</script>
<title>Untitled Document</title>
</head>

<body onload="ini();">
<form name="form" action="" method="post">
                <label for="dataNasc">Data Nasc.</label>
                <input type="text" name="dataNasc" maxlength="10" required="required" tipo="data" value="{dataNasc}" />
</form>
</body>
</html>

在我选择输入标签(ini功能)的两种情况下,属性&#34; tipo&#34;未列出。该属性返回&#34; undefined&#34;。它接缝是使用标签中的信息创建的对象,而不是对象&#34;的转换&#34;标签。使用outerHTML,我可以手动完成(希望这个属性是跨浏览器),但我想知道是否有使用JavaScript资源的方法......我该怎么做?

2 个答案:

答案 0 :(得分:2)

一旦你有了对元素的引用,你就可以迭代它的attributes NamedNodeMap来发现它的所有属性。例如,假设只有一个匹配元素匹配您的选择器...

var elt=document.querySelector('form[name="form"] input[name="dataNasc"]'),
    attrs=elt ? elt.attributes : [];

for(var i=0; i<attrs.length; i++) {
    console.log('attr "'+attrs[i].name+'" contains "'+attrs[i].value+'"');
}

答案 1 :(得分:0)

试试这个:

function ini(){
    console.log("Element dump:");
    var elem = document.querySelector('form[name="form"] input[name="dataNasc"]');
    for(var i in elem){
        console.log(i+":"+elem[i]);
    }
     console.log("Form element dump:");
    var Form = document.forms["form"];
    var input = Form.dataNasc;
     var myObj = {};
     for(var i in input){
         myObj[i] = input[i];
    }
 }