我有一个非常像这样的html页面:
<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实现这样的数组:
{
id:"<value in search[id]>",
name:"<value in search[name]>",
....ecc ecc...
}
数组的键不是静态的,所以我不能在代码中静态命名它们。 我尝试用$(“#search”),但我没有幸运:( 非常感谢你的帮助! 抱歉这个noob问题!
答案 0 :(得分:1)
var obj = {};
$('#all [id^=search]').each(function() {
obj[this.id.match(/\[(.*)\]/)[1]] = this.value;
});
答案 1 :(得分:1)
jQuery提供$(form).serializeArray()
as documented on their API site(总是值得一看,那个)。
答案 2 :(得分:0)
这可以在原生JavaScript 中执行;假设您的HTML
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: ""}