为什么我收到此错误' TypeError undefined不是对象...'何时包含Shopify链接产品选项?

时间:2015-05-18 14:31:07

标签: javascript jquery shopify

我尝试将Shopify的链接产品选项实施到我的商店(按照此tutorial),它们似乎在产品页面上工作正常但打破了其他脚本(Cart&我的索引和收藏页面上的快速商店开放但没有内容。

我在Safari中收到以下错误:

TypeError: undefined is not an object (evaluating 'availableOptions.length')

引用了这段代码:

var initialValue = selector.val();
  selector.empty();    
  var availableOptions = Shopify.optionsMap[key];
  for (var i=0; i<availableOptions.length; i++) {
    var option = availableOptions[i];
    var newOption = jQuery('<option></option>').val(option).html(option);
    selector.append(newOption);
  }

如果有人有任何建议,为什么会这样,我会很感激你的意见。我对JS这么挣扎是不是很好!

更新

我非常确定这部分内容正在定义&#39; key&#39; - 如果key未定义,那是否意味着找不到.single-option-selector

 switch (selectorIndex) {
case 0:
  var key = 'root';
  var selector = jQuery('.single-option-selector:eq(0)');
  break;
case 1:
  var key = jQuery('.single-option-selector:eq(0)').val();
  var selector = jQuery('.single-option-selector:eq(1)');
  break;
case 2:
  var key = jQuery('.single-option-selector:eq(0)').val();  
  key += ' / ' + jQuery('.single-option-selector:eq(1)').val();
  var selector = jQuery('.single-option-selector:eq(2)');
  }

1 个答案:

答案 0 :(得分:0)

第1步:找出错误

这意味着availableOptions为undefind因此Shopify.optionsMap[key]返回undefined。

你应该尝试这个来调试。是否定义了关键?如果Shopify对吗? Shopify.optionsMap是否存在?

console.log(key);
console.log(Shopify);
console.log(Shopify.optionsMap);
console.log(Shopify.optionsMap[key]);

第2步:使其更加全球化

var key = '';
var selector = '';
switch (selectorIndex) {
case 0:
  key = 'root';
  selector = jQuery('.single-option-selector:eq(0)');
  break;
case 1:
  key = jQuery('.single-option-selector:eq(0)').val();
  selector = jQuery('.single-option-selector:eq(1)');
  break;
case 2:
  key = jQuery('.single-option-selector:eq(0)').val();  
  key += ' / ' + jQuery('.single-option-selector:eq(1)').val();
  selector = jQuery('.single-option-selector:eq(2)');
  }