1

DOM私のフォームに次の s があるとしましょう:

<body>
    <input id="input_1" class="post" type="text" value="abc" />
    <input id="input_2" class="xxxx" type="text" value="xyz" /> <!--TO IGNORE-->
    <input id="input_3" class="post" type="checkbox" checked="checked" />
    <input id="input_4" class="post" type="radio" checked="checked" />
    <select id="input_5" class="post">
        <option value="1">One</option>
        <option value="2" selected="selected">Two</option>
    </select>
    <input id="input_6" class="xxxx" type="checkbox" /> <!--TO IGNORE-->
</body>

class="post"すべての要素の値配列を取得するにはどうすればよいですか?
したがって、Multidimentional Array次のような邪魔になります:

POST_ELEMENTS[0]["input_1"] = "abc";
POST_ELEMENTS[1]["input_3"] = 1;
POST_ELEMENTS[2]["input_4"] = 1;
POST_ELEMENTS[3]["input_5"] = "two";
  • Arrayこの種のすべての特定のクラスを構築する方法を教えてclass="post"ください。
4

5 に答える 5

2

2 次元配列は必要ありません。配列のインデックスは 、 、 などを0示し1ます2

配列のような jQuery オブジェクト

すでに一致する要素にアクセスできる配列のようなオブジェクトを取得できます。

var posts = $('.post');

alert(posts[0].id); // input_1
alert(posts[0].value); // abc

配列のような純粋な JS ルックアップ

純粋な JavaScript メソッドgetElementsByClassNameを使用してすべての要素を取得することもできます (ただし、jQuery 関数はキャストなしでは機能しません$()) 。

var posts = document.getElementsByClassName('post');

alert(posts[0].id); // input_1
alert(posts[0].value); // abc

配列

または、実際の配列 (配列のようなオブジェクトではない) を作成するには、次のようにします。

var posts = [];
$('.post').each(function () {
    posts.push(this);
});

alert(posts[0].id); // input_1
alert(posts[0].value); // abc
于 2013-04-05T08:32:39.340 に答える
1

すべてのノードを取得して、getElementsByClassName()それらを必要な形式にマップできます。

var POST_ELEMENTS = {};
[].forEach.call(
    document.getElementsByClassName('post'), 
    function(item) {
        POST_ELEMENTS[item.id] = item.value;
    }
);

デモ

于 2013-04-05T08:39:42.373 に答える
1
var obj=[];
  console.log(obj);
$('.post').each(function(key,value)
                {  obj[key]={};
                obj[key][$(value).attr('id')]=$(value).attr('value');               

              });

これが私のフィドルです

于 2013-04-05T09:00:51.590 に答える
0

2 つの次元がある理由はわかりません。私が見る限り、ここで必要なのは 1 つだけです。

var posts = {};
$('.port').each(function() {
    posts[this.id] = this.value;
});

結果はキーと値のペアのオブジェクトになります。

posts = {
    'input_1': abc',
    ...
}
于 2013-04-05T08:32:28.297 に答える