首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从html " array“到javascript array

从html " array“到javascript array
EN

Stack Overflow用户
提问于 2013-03-05 01:05:27
回答 3查看 79关注 0票数 0

我有一个html页面,它是这样制作的:

代码语言:javascript
运行
复制
<table id="all">
<tr><td><input type="text" name="search[id]" id="search[id]"></input></td></tr>
<tr><td><input type="text" name="search[name]" id="search[name]"></input></td></tr>
..........ecc ecc..........
</table>

我想用javascript或jquery实现一个这样的数组:

代码语言:javascript
运行
复制
{
id:"<value in search[id]>",
name:"<value in search[name]>",
....ecc ecc...
}

数组的键不是静态的,所以我不能在代码中静态地命名它们。我尝试了$("#search"),但我一直不太幸运:(非常感谢你的帮助!对于这个菜鸟问题,我很抱歉!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-03-05 01:14:46

jQuery提供了$(form).serializeArray() as documented on their API site (它总是值得一看)。

票数 1
EN

Stack Overflow用户

发布于 2013-03-05 01:10:23

代码语言:javascript
运行
复制
var obj = {};
$('#all [id^=search]').each(function() {
   obj[this.id.match(/\[(.*)\]/)[1]] = this.value;
});

DEMONSTRATION

票数 1
EN

Stack Overflow用户

发布于 2013-03-05 02:36:29

这在本地JavaScript中是可行的;假设您的

代码语言:javascript
运行
复制
function nameToObj(queryName, nodes, context) { // `nodes`, `context` optional
    var o = {}, i, j = queryName.length; // var what we'll need
    context || (context = document);
        // if `context` falsy, use `document`
    nodes || (nodes = context.getElementsByTagName('input'));
        // if `nodes` falsy, get all <input>s from `context`
    i = nodes.length; // initial `i`
    while (i--) { // loop over each node
        if (nodes[i].name.slice(0,j) === queryName) { // test
            o[nodes[i].name.slice(j+1,-1)] = nodes[i].value;
                // match, append to object
        }
    }
    return o; // return object
}
nameToObj('search'); // Object {name: "", id: ""}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15206966

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档