0

私はこのように作られた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の質問をお詫びします!

4

3 に答える 3

1
var obj = {};
$('#all [id^=search]').each(function() {
   obj[this.id.match(/\[(.*)\]/)[1]] = this.value;
});

デモンストレーション

于 2013-03-04T17:10:22.560 に答える
1

jQuery は$(form).serializeArray() 、API サイトで文書化されているとおりに提供します(常に一見の価値があります)。

于 2013-03-04T17:14:45.513 に答える
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: ""}
于 2013-03-04T18:36:28.507 に答える