我尝试将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)');
}
答案 0 :(得分:0)
这意味着availableOptions为undefind
因此Shopify.optionsMap[key]
返回undefined。
你应该尝试这个来调试。是否定义了关键?如果Shopify对吗? Shopify.optionsMap是否存在?
console.log(key);
console.log(Shopify);
console.log(Shopify.optionsMap);
console.log(Shopify.optionsMap[key]);
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)');
}