0

以下では、入力要素の各属性を反復処理しようとしています。それは機能しておらず、理由はわかりません。これは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>
4

3 に答える 3

1

意味をなさないのは、入力配列の「属性」です。

$.each(input.attributes

の結果は$(this).find(':input')、アイテムのjQuery選択(配列)を返します。

入力属性を反復処理しようとしていますか?$.each(input[i].attributesはあなたが探していることであり、コレクションiのイテレータはどこにありますか。input

〜これがあなたがしたいことです:

<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>
于 2013-01-22T19:32:32.373 に答える
0

私は最初に入力を通過する必要があると思います。理由はわかりませんが、簡単に解決できました。

        value='';
        input.each(function(){
        $.each(this.attributes, function(i, attrib){
            if (attrib.name!='type'){
                value +=attrib.name + ":" + attrib.value + ";";
            }
        });
        });
于 2013-01-22T19:52:25.547 に答える
0

プレーンなjavasriptを使用することもできます。

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);
    }
}

HTML要素のすべての属性を反復処理するにはどうすればよいですか?

于 2013-01-22T20:06:11.593 に答える