我盯着这个显然无法正常工作的小段代码太久了。为什么没有选择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中收到错误



alteredSelects[i][0] = $(this).attr('rel');

但似乎无法意识到原因。

最佳答案

您首先必须初始化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

10-05 19:46