jQuery中的不合理错误?

时间:2017-12-16 18:27:07

标签: javascript jquery

我有这段代码:

 var buggy_brand_name = ['Baby Jogger', 'Babyzen', 'Bugaboo', 'GB', 'Icandy', 'Joie', 'Maclaren', 'Mamas&Papas', 'Maxi cosi', 'Mountain Buggy', "Out 'N' About", 'Phil and Teds',
'Quinny', 'Silver Cross', 'Stokke', 'UppaBaby'];
var multi_model = [['City Elite', 'City Lite', 'City Mini', 'City Mini GT', 'City Mini ZIP', 'City Select', 'City Versa GT', 'City Vue', 'Summit X3'],
  ['Yoyo+', 'Zen'],
  ['Buffalo', 'Cameleon3', 'Bee +', 'Bee 3', 'Bee 5', 'Donkey'],
  ['Pockit'],
  ['Peach Pushchair', 'Peach Pushchair and Carrycot', 'Peach All Teraine Pushchair and Carrycot', 'Peach All Teraine Pushchair', 'Apple Pushchair',
  'Apple 2 Pear Pushchair (Double)', 'Strawberry Pushchair', 'Strawberry Style Collection Pushchair', 'Strawberry 2 Pushchair'],
  ['Nitro'],
  ['Techno XLR', 'Techno XT', 'Quest', 'Triumph'],
  ['Armadillo', 'Voyage', 'Zoom', 'Ocarro'],
  ['Elea', 'Mura', 'Stella', 'Nova', 'Dana'],
  ['Nano', 'Urban', 'Terrain', 'Duet', 'Swift', 'Mini'],
  ['Nipper', 'Sport Nipper', 'Nipper Double', 'Nipper 360'],
  ['Dot', 'Smart', 'Sport ', 'Dash', 'Mod', 'Voyager', 'Lux', 'Verve'],
  ['Moodd', 'Buzz', 'Zapp'],
  ['Pioneer', 'Wayfarer ', 'Zest', 'Pop', 'Reflex'],
  ['Xplory', 'Scoot', 'Trailz'],
  ['Cruz 2017', 'UppaBaby Vista', 'UppaBaby G-Luxe']];
for(var i = 0; i < buggy_brand_name.length;  i++) {
$('#brand').append('<option value="' + buggy_brand_name[i] + '">' + buggy_brand_name[i] + '</option>');

$('#brand').on('change', function() {
$('#model_fieldset').css({display: 'block'});
  var brand = $('#brand').val();
  var model = $('#model');
  switch (brand)
  {
    case 'Baby Jogger':
      $('.sell-model').remove();
      for (var i = 0; i < multi_model[0][i].length; i++) {
        model.append('<option class="sell-model" value="' + multi_model[0][i] + '">' +multi_model[0][i] + '</option>');
      }
      break;
    case 'Babyzen':
      $('.sell-model').remove();
      for (var i = 0; i < multi_model[1][i].length; i++) {
        model.append('<option class="sell-model" value="' + multi_model[1][i] + '">' +multi_model[1][i] + '</option>');
      }
      break;
    case 'Bugaboo':
      $('.sell-model').remove();
      for (var i = 0; i < multi_model[2][i].length; i++) {
        model.append('<option class="sell-model" value="' + multi_model[2][i] + '">' +multi_model[2][i] + '</option>');
      }
      break;
    case 'GB':
      $('.sell-model').remove();
      for (var i = 0; i < multi_model[3][i].length; i++) {
        model.append('<option class="sell-model" value="' + multi_model[3][i] + '">' +multi_model[3][i] + '</option>');
      }
      break;
    case 'Icandy':
      $('.sell-model').remove();
      for (var i = 0; i < multi_model[4][i].length; i++) {
        model.append('<option class="sell-model" value="' + multi_model[4][i] + '">' +multi_model[4][i] + '</option>');
      }
      break;
    case 'Joie':
      $('.sell-model').remove();
      for (var i = 0; i < multi_model[5][i].length; i++) {
        model.append('<option class="sell-model" value="' + multi_model[5][i] + '">' +multi_model[5][i] + '</option>');
      }
      break;
    case 'Maclaren':
      $('.sell-model').remove();
      for (var i = 0; i < multi_model[6][i].length; i++) {
        model.append('<option class="sell-model" value="' + multi_model[6][i] + '">' +multi_model[6][i] + '</option>');
      }
      break;
    case 'Mamas&Papas':
      $('.sell-model').remove();
      for (var i = 0; i < multi_model[7][i].length; i++) {
        model.append('<option class="sell-model" value="' + multi_model[7][i] + '">' +multi_model[7][i] + '</option>');
      }
      break;
    case 'Maxi cosi':
      $('.sell-model').remove();
      for (var i = 0; i < multi_model[8][i].length; i++) {
        model.append('<option class="sell-model" value="' + multi_model[8][i] + '">' +multi_model[8][i] + '</option>');
      }
      break;
    case 'Mountain Buggy':
      $('.sell-model').remove();
      for (var i = 0; i < multi_model[9][i].length; i++) {
        model.append('<option class="sell-model" value="' + multi_model[9][i] + '">' +multi_model[9][i] + '</option>');
      }
      break;
    case "Out 'N' About":
      $('.sell-model').remove();
      for (var i = 0; i < multi_model[10][i].length; i++) {
        model.append('<option class="sell-model" value="' + multi_model[10][i] + '">' +multi_model[10][i] + '</option>');
      }
      break;
    case 'Phil and Teds':
      $('.sell-model').remove();
      for (var i = 0; i < multi_model[11][i].length; i++) {
        model.append('<option class="sell-model" value="' + multi_model[11][i] + '">' +multi_model[11][i] + '</option>');
      }
      break;
    case 'Quinny':
      $('.sell-model').remove();
      for (var i = 0; i < multi_model[12][i].length; i++) {
        model.append('<option class="sell-model" value="' + multi_model[12][i] + '">' +multi_model[12][i] + '</option>');
      }
      break;
    case 'Silver Cross':
      $('.sell-model').remove();
      for (var i = 0; i < multi_model[13][i].length; i++) {
        model.append('<option class="sell-model" value="' + multi_model[13][i] + '">' +multi_model[13][i] + '</option>');
      }
      break;
    case 'Stokke':
      $('.sell-model').remove();
      for (var i = 0; i < multi_model[14][i].length; i++) {
        model.append('<option class="sell-model" value="' + multi_model[14][i] + '">' +multi_model[14][i] + '</option>');
      }
      break;
    case 'UppaBaby':
      $('.sell-model').remove();
      for (var i = 0; i < multi_model[15][i].length; i++) {
        model.append('<option class="sell-model" value="' + multi_model[15][i] + '">' +multi_model[15][i] + '</option>');
      }
      break;
  };

一切正常,但我收到了这些错误:

  

sybg_js_1.js:75未捕获的TypeError:无法读取属性&#39;长度&#39;未定义的   在HTMLSelectElement。 (sybg_js_1.js:75)
  在HTMLSelectElement.dispatch(jquery-3.2.1.min.js:3)
  在HTMLSelectElement.q.handle(jquery-3.2.1.min.js:3)

     

(匿名)@ sybg_js_1.js:75
  dispatch @ jquery-3.2.1.min.js:3
  q.handle @jquery-3.2.1.min.js:3

     

sybg_js_1.js:81 Uncaught TypeError:无法读取属性&#39; length&#39;未定义的

     

在HTMLSelectElement上。 (sybg_js_1.js:81)
  在HTMLSelectElement.dispatch(jquery-3.2.1.min.js:3)       在HTMLSelectElement.q.handle(jquery-3.2.1.min.js:3)       (匿名)@ sybg_js_1.js:81       dispatch @ jquery-3.2.1.min.js:3       q.handle @jquery-3.2.1.min.js:3       sybg_js_1.js:99未捕获的TypeError:无法读取属性&#39; length&#39;的       ndefined       在HTMLSelectElement。 (sybg_js_1.js:99)       在HTMLSelectElement.dispatch(jquery-3.2.1.min.js:3)       在HTMLSelectElement.q.handle(jquery-3.2.1.min.js:3)       (匿名)@ sybg_js_1.js:99       dispatch @ jquery-3.2.1.min.js:3       q.handle @jquery-3.2.1.min.js:3       sybg_js_1.js:105 Uncaught TypeError:无法读取属性&#39; length&#39;的       未定义       在HTMLSelectElement。 (sybg_js_1.js:105)       在HTMLSelectElement.dispatch(jquery-3.2.1.min.js:3)       在HTMLSelectElement.q.handle(jquery-3.2.1.min.js:3)       (匿名)@ sybg_js_1.js:105       dispatch @ jquery-3.2.1.min.js:3       q.handle @jquery-3.2.1.min.js:3       sybg_js_1.js:147 Uncaught TypeError:无法读取属性&#39; length&#39;的       未定义       在HTMLSelectElement。 (sybg_js_1.js:147)       在HTMLSelectElement.dispatch(jquery-3.2.1.min.js:3)       在HTMLSelectElement.q.handle(jquery-3.2.1.min.js:3)       (匿名)@ sybg_js_1.js:147       dispatch @ jquery-3.2.1.min.js:3       q.handle @jquery-3.2.1.min.js:3       sybg_js_1.js:75未捕获的TypeError:无法读取属性&#39; length&#39;的       未定义       在HTMLSelectElement。 (sybg_js_1.js:75)       在HTMLSelectElement.dispatch(jquery-3.2.1.min.js:3)       在HTMLSelectElement.q.handle(jquery-3.2.1.min.js:3)       (匿名)@ sybg_js_1.js:75       dispatch @ jquery-3.2.1.min.js:3       q.handle @jquery-3.2.1.min.js:3       sybg_js_1.js:81未捕获的TypeError:无法读取属性&#39; length&#39;的       未定义       在HTMLSelectElement。 (sybg_js_1.js:81)       在HTMLSelectElement.dispatch(jquery-3.2.1.min.js:3)       在HTMLSelectElement.q.handle(jquery-3.2.1.min.js:3)       (匿名)@ sybg_js_1.js:81       dispatch @ jquery-3.2.1.min.js:3       q.handle @jquery-3.2.1.min.js:3       sybg_js_1.js:87未捕获的TypeError:无法读取属性&#39; length&#39;的       未定义       在HTMLSelectElement。 (sybg_js_1.js:87)       在HTMLSelectElement.dispatch(jquery-3.2.1.min.js:3)       在HTMLSelectElement.q.handle(jquery-3.2.1.min.js:3)       (匿名)@ sybg_js_1.js:87       dispatch @ jquery-3.2.1.min.js:3       q.handle @jquery-3.2.1.min.js:3       sybg_js_1.js:93未捕获的TypeError:无法读取属性&#39; length&#39;的       未定义       在HTMLSelectElement。 (sybg_js_1.js:93)       在HTMLSelectElement.dispatch(jquery-3.2.1.min.js:3)       在HTMLSelectElement.q.handle(jquery-3.2.1.min.js:3)       (匿名)@ sybg_js_1.js:93       dispatch @ jquery-3.2.1.min.js:3       q.handle @jquery-3.2.1.min.js:3       sybg_js_1.js:99未捕获的TypeError:无法读取属性&#39; length&#39;的       未定义       在HTMLSelectElement。 (sybg_js_1.js:99)       在HTMLSelectElement.dispatch(jquery-3.2.1.min.js:3)       在HTMLSelectElement.q.handle(jquery-3.2.1.min.js:3)       (匿名)@ sybg_js_1.js:99       dispatch @ jquery-3.2.1.min.js:3       q.handle @jquery-3.2.1.min.js:3       sybg_js_1.js:105 Uncaught TypeError:无法读取属性&#39; length&#39;的       未定义       在HTMLSelectElement。 (sybg_js_1.js:105)       在HTMLSelectElement.dispatch(jquery-3.2.1.min.js:3)       在HTMLSelectElement.q.handle(jquery-3.2.1.min.js:3)       (匿名)@ sybg_js_1.js:105       dispatch @ jquery-3.2.1.min.js:3       q.handle @jquery-3.2.1.min.js:3       sybg_js_1.js:111 Uncaught TypeError:无法读取属性&#39; length&#39;的       未定义       在HTMLSelectElement。 (sybg_js_1.js:111)       在HTMLSelectElement.dispatch(jquery-3.2.1.min.js:3)       在HTMLSelectElement.q.handle(jquery-3.2.1.min.js:3)       (匿名)@ sybg_js_1.js:111       dispatch @ jquery-3.2.1.min.js:3       q.handle @jquery-3.2.1.min.js:3       sybg_js_1.js:117 Uncaught TypeError:无法读取属性&#39; length&#39;的       未定义       在HTMLSelectElement。 (sybg_js_1.js:117)       在HTMLSelectElement.dispatch(jquery-3.2.1.min.js:3)       在HTMLSelectElement.q.handle(jquery-3.2.1.min.js:3)       (匿名)@ sybg_js_1.js:117       dispatch @ jquery-3.2.1.min.js:3       q.handle @jquery-3.2.1.min.js:3       sybg_js_1.js:165 Uncaught TypeError:无法读取属性&#39; length&#39;的       未定义       在HTMLSelectElement。 (sybg_js_1.js:165)       在HTMLSelectElement.dispatch(jquery-3.2.1.min.js:3)       在HTMLSelectElement.q.handle(jquery-3.2.1.min.js:3)       (匿名)@ sybg_js_1.js:165       dispatch @ jquery-3.2.1.min.js:3       q.handle @jquery-3.2.1.min.js:3

有人知道为什么吗?

1 个答案:

答案 0 :(得分:0)

在所有情况下,您希望multi_model[10][i].lengthmulti_model[10].length交换(使用相应的索引而不是10)。

对于循环条件,您需要multi_model中某个元素的长度。虽然multi_model个元素本身就是数组,但它们不包含任何数组,而是包含字符串。

特别是条件i < multi_model[0][i].length应该让你想知道,这里的某些东西是不合逻辑的。

祝你好运!