Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/438.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript仅在页面加载后工作_Javascript_Jquery - Fatal编程技术网

Javascript仅在页面加载后工作

Javascript仅在页面加载后工作,javascript,jquery,Javascript,Jquery,meta标记位于页面的头部,javascript位于文档末尾的jQuery之后。当我从Chrome的控制台运行代码时,它工作正常,sortList设置为[[0,0]],正如我预期的那样,但当它在页面上运行时,控制台中会出现异常。未捕获的TypeError:无法使用“in”运算符在未定义的函数中搜索“date” HTML 问题是,if上缺少一个块,缩进是在欺骗你: $(document).ready(function(){ // MISSING { HERE ---------------

meta标记位于页面的头部,javascript位于文档末尾的jQuery之后。当我从Chrome的控制台运行代码时,它工作正常,sortList设置为[[0,0]],正如我预期的那样,但当它在页面上运行时,控制台中会出现异常。未捕获的TypeError:无法使用“in”运算符在未定义的函数中搜索“date”

HTML


问题是,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未定义

你可能想要的是:


当然,它只有在页面加载后才能工作:try window.onload=yourFunction;为了获得一致的结果,请在JQuery document ready区块中进行。恐怕您的问题中没有足够的信息供我们回答。您需要创建一个示例来演示问题,如果您可以在该环境中复制问题,最好使用堆栈片段,我应该向@T.J.Crowder指出,我复制了你在本例中的标准回答MCVE,这样我就不必每次都从“帮助”部分拼凑出一些东西:@Andy:我在speeddial上有三个,bookmarklet。以上是一次性的,但我打字很快-好吧,那么这是软标签和硬标签的问题了?@XO:JavaScript不关心软标签和硬标签。这是另一个例子,说明不总是在控制语句之后使用块会让你感到痛苦,浪费你的时间。Javascript不会,但我的编辑器会,这就解释了为什么它显示为正确的内联而不是。我现在要添加控制语句。
$(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($('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') == '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]]; 
}