元标记位于页面的头部,javascript位于文档末尾的jQuery之后。当我从Chrome的控制台运行代码时,它工作正常,sortList设置为[[0,0]]
正如我所期望的那样,但当它在页面上运行时,我在控制台中得到一个异常。 Uncaught TypeError: Cannot use 'in' operator to search for 'date' in undefined(anonymous function)
HTML
<meta data-var="sickbeard.COMING_EPS_SORT" data-content="date">
的Javascript
$(document).ready(function(){
if($('meta[data-var="sickbeard.COMING_EPS_LAYOUT"]').data('content') == 'list')
var sortCodes = {'date': 0, 'show': 1, 'network': 4};
var sort = $('meta[data-var="sickbeard.COMING_EPS_SORT"]').data('content');
var sortList = (sort in sortCodes) ? [[sortCodes[sort], 0]] : [[0, 0]];
if($('meta[data-var="sickbeard.COMING_EPS_LAYOUT"]').data('content') == 'banner' || $('meta[data-var="sickbeard.COMING_EPS_LAYOUT"]').data('content') == 'poster')
$('#sbRoot').ajaxEpSearch({'size': 16, 'loadingImage': 'loading16' + themeSpinner + '.gif'});
$('.ep_summary').hide();
$('.ep_summaryTrigger').click(function() {
$(this).next('.ep_summary').slideToggle('normal', function() {
$(this).prev('.ep_summaryTrigger').attr('src', function(i, src) {
return $(this).next('.ep_summary').is(':visible') ? src.replace('plus','minus') : src.replace('minus','plus')
});
});
});
});
答案 0 :(得分:3)
问题是您错过了if
上的某个区块,并且您的缩进对您不利:
$(document).ready(function(){
// MISSING { HERE --------------------------------------------------------------v
if($('meta[data-var="sickbeard.COMING_EPS_LAYOUT"]').data('content') == 'list')
var sortCodes = {'date': 0, 'show': 1, 'network': 4};
var sort = $('meta[data-var="sickbeard.COMING_EPS_SORT"]').data('content');
var sortList = (sort in sortCodes) ? [[sortCodes[sort], 0]] : [[0, 0]];
if($('meta[data-var="sickbeard.COMING_EPS_LAYOUT"]').data('content') == 'banner' || $('meta[data-var="sickbeard.COMING_EPS_LAYOUT"]').data('content') == 'poster')
$('#sbRoot').ajaxEpSearch({'size': 16, 'loadingImage': 'loading16' + themeSpinner + '.gif'});
$('.ep_summary').hide();
$('.ep_summaryTrigger').click(function() {
$(this).next('.ep_summary').slideToggle('normal', function() {
$(this).prev('.ep_summaryTrigger').attr('src', function(i, src) {
return $(this).next('.ep_summary').is(':visible') ? src.replace('plus','minus') : src.replace('minus','plus')
});
});
});
});
因此,如果if
条件为真,则仅适用以下行。你真正拥有的是:
if($('meta[data-var="sickbeard.COMING_EPS_LAYOUT"]').data('content') == 'list')
var sortCodes = {'date': 0, 'show': 1, 'network': 4};
var sort = $('meta[data-var="sickbeard.COMING_EPS_SORT"]').data('content');
var sortList = (sort in sortCodes) ? [[sortCodes[sort], 0]] : [[0, 0]];
因此,如果if
条件为false,则sortCodes
为undefined
。
你可能想要的是:
if($('meta[data-var="sickbeard.COMING_EPS_LAYOUT"]').data('content') == 'list') {
var sortCodes = {'date': 0, 'show': 1, 'network': 4};
var sort = $('meta[data-var="sickbeard.COMING_EPS_SORT"]').data('content');
var sortList = (sort in sortCodes) ? [[sortCodes[sort], 0]] : [[0, 0]];
}