javascript对象遍历属性的元素

时间:2013-01-22 19:27:25

标签: jquery

下面,我试图遍历输入元素中的每个属性。它不起作用,我不知道为什么。这是对名为input的对象的错误使用吗?我该如何改变?

<script>
   $('form.trade').submit(function(e) {
      e.preventDefault();
      input=$(this).find(':input:first');
      value='';

      $.each(input.attributes, function(i, attrib){
        if (attrib.name!='type'){
            value +=attrib.name + ":" + attrib.value + ";";
        }
      });
      });
</script>
<form class="trade" id="24243">
<input type="hidden" available="4" pid="24243" cardname="something" yay="blah">
Available: <p class="available">4</p>
<input type="submit" value="add card">
</form>
<br/>
<form class="trade" id="24245">
<input type="hidden" available="7" pid="24243" cardname="somethik" yay="blakk">
Available: <p class="available">7</p>
<input type="submit" value="add card">
</form>

3 个答案:

答案 0 :(得分:1)

输入数组上的“属性”没有意义。

$.each(input.attributes

$(this).find(':input')的结果返回项的jQuery选择(数组)。

您是否尝试迭代输入属性? $.each(input[i].attributes是您要做的事情,其中​​iinput集合中的迭代器。

〜这就是你想要做的事情:

<script>
      $('form.trade').submit(function(e) {
           e.preventDefault();
           var $inputs=$(this).find(':input:first');
           var value='';
           $inputs.each(function(i,input){
             $.each(input.attributes, function(j,attrib){
                 if (attrib.name!=='type'){
                value +=attrib.name + ":" + attrib.value + ";";
                 }   
             });
           });
           console.log(value); // what do you want to do with value??
      });
</script>

答案 1 :(得分:0)

我想我必须先完成输入。我不知道为什么,但它很容易解决。

        value='';
        input.each(function(){
        $.each(this.attributes, function(i, attrib){
            if (attrib.name!='type'){
                value +=attrib.name + ":" + attrib.value + ";";
            }
        });
        });

答案 2 :(得分:0)

您可以使用普通的javascript:

var elem = document.getElementById('testElement');
for (var i = 0; i < elem.attributes.length; i++) {
    var att = elem.attributes[i];
    if (att.specified == true) {
    console.log(att.name + " " + att.value);
    }
}

How to iterate through all attributes in an HTML element?