1

私は今日ここにいて、キーと値のペアの配列に関する質問をしています。

私のhtmlは次のとおりです

<input type="checkbox" class="data" id="task_checked" value="1" email="a@a.com">
<input type="checkbox" class="data" id="task_checked" value="2" email="b@b.com">

次のデータを次のような配列として保存したいと思います。

"1" => "a@a.com"
"2" => "b@b.com"

私のJavascriptは現在次のとおりです。

var newTasksArr = new Array();

$("#task_checked:checked").each(function() {
    var email = $(this).attr("email");
    var id = $(this).val();
    newTasksArr['id'] = email;

});

おそらく私はJquery.each()を間違って使用していますが、誰かが私の質問に光を当てることができますか?

読んでいただきありがとうございます。よろしく。

4

3 に答える 3

3

2 つの問題:

Javascript では、配列は連続した数値キーのみを持つことができます。文字列をキーとして使用する場合は、オブジェクトが必要です。

の値に等しいキーを持つ要素を挿入する場合は、引用符なしで行いidますnewTasksArr[id] = email;

于 2013-02-20T16:48:06.933 に答える
1

'id'リテラル string の代わりに id 変数に含まれる値を使用するように、周囲の引用符を削除するだけです'id'

{}また、配列 ( ) の代わりにオブジェクト ( ) を使用する必要があります[]

var newTasks = {};
$("#task_checked:checked").each(function() {
    var email = $(this).attr("email");
    var id = $(this).val();
    newTasks[id] = email;
});
于 2013-02-20T16:48:32.357 に答える
0

マークアップで ID を複製しないでください。以下が役に立ちますが、jquery セレクターを微調整してコンテキストを含めることをお勧めします。

var arr = {};

$('input:checked').each(function() {
    var $t = $(this);

    var email = $t.attr("email");
    if (!email) {
        // you may wish to do something if email is missing
    }

    var id = $t.val();
    if (!id) {
        // deal with the error
    }

    arr[id] = email;
});
于 2013-02-20T16:53:02.817 に答える