Javascript/JQuery,使我定义的所有DOM元素的多维数组



假设我的表单上有以下DOM

<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";
  • 请如何构造这种属于所有特定类别class="post"Array

您不需要二维数组,数组的索引将指示012等。

类似数组的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
var posts = {}
$('.post').each(function(v,i){
    posts[this.id] = this.value
})

将返回一维数组{input_1':1,input_2':2}

var posts = []
$('.post').each(function(v,i){
    var obj = {}
    obj[this.id] = this.value
    posts.push( obj)
})

将创建多维数组

您可以使用getElementsByClassName()获取所有节点,然后将它们映射到您想要的格式:

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

演示

var obj=[];
  console.log(obj);
$('.post').each(function(key,value)
                {  obj[key]={};
                obj[key][$(value).attr('id')]=$(value).attr('value');               
              });

这是我的小提琴

我看不出有任何理由存在2个维度——据我所见,这里只需要一个:

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

结果是键/值对的对象:

posts = {
    'input_1': abc',
    ...
}

相关内容

  • 没有找到相关文章

最新更新