3

私はこれをあまりにも長い間見つめてきましたが、明らかにコードの一部が機能していないようです。select box rel 属性が警告を受けないのはなぜですか?

HTML:

<select rel="prop216" name="prop[]">
  <option value="">- none</option>
  <option value="12">Opt 1</option>
  <option value="13">Opt 2</option>
</select>
<select rel="prop217" name="prop[]">
  <option value="">- none</option>
  <option value="12">Opt 1</option>
  <option value="13">Opt 2</option>
</select>

jQuery:

$("select").change(function()
{
 var i = 0;
 var alteredSelects = [];
 $("select").each(function()
 {
    if ( $(this).val() !== "" )
    {
        alteredSelects[i][0] = $(this).attr('rel');
        alteredSelects[i][1] = $(this).val();
        alert ($(this).attr('rel'));
        i++;

    }
 });
});

私の jSfiddle も参照してください: http://jsfiddle.net/ft6Bd/1/

Firefox でエラーが発生する

TypeError: undefined をオブジェクトに変換できません

ライン上alteredSelects[i][0] = $(this).attr('rel');

しかし、その理由を理解できないようです。

4

2 に答える 2

6

alteredSelects[i]値を割り当てる前に、まず初期化する必要があります。

$("select").change(function() {
    var i = 0;
    var alteredSelects = [];
    $("select").each(function() {
        if ( $(this).val() !== "" ) {
            alteredSelects[i] = []; // <-- Initialize `alteredSelects[i]` as empty array.
            alteredSelects[i][0] = $(this).attr('rel');
            alteredSelects[i][1] = $(this).val();
            alert($(this).attr('rel'));
            i++;
        }
    });
});

問題は、何かを に保存しようとしていたことですがalteredSelects[i]alteredSelects[i]は でしたnull

于 2013-01-04T14:29:20.877 に答える
0

それは答えではありませんが、インデックス付けに独自の宣言された変数を使用するべきではありません。jqueryにはそれぞれ独自のインデックスがあります。

  $.each(collection, function(index, value) { 

  });
于 2013-01-04T14:33:42.580 に答える