首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >调用Javascript函数不执行

调用Javascript函数不执行
EN

Stack Overflow用户
提问于 2016-03-03 19:21:49
回答 1查看 101关注 0票数 0

我有一个名为highchartCheck的内部函数,它似乎没有执行,我也不知道为什么。执行打印媒体查询检查,并将其记录下来,而不是highchartCheck,即使我在if块的末尾调用它。

代码语言:javascript
复制
if (window.matchMedia) {
    var mq = window.matchMedia('print');

        if (mq.matches) {
            console.log("Print JS Executed");

            function highchartCheck() {
                console.log("check func exec");

                if (document.getElementById('highcharts-0') && document.getElementById("highcharts-2") && document.getElementById("highcharts-4")) {
                    document.getElementById("highcharts-0").querySelectorAll("svg")[0].setAttribute("viewBox", "0 0 5.5in 3.6in");
                    document.getElementById("highcharts-2").querySelectorAll("svg")[0].setAttribute("viewBox", "0 0 5.5in 3.6in");
                    document.getElementById("highcharts-4").querySelectorAll("svg")[0].setAttribute("viewBox", "0 0 5.5in 3.6in");
                    console.log("if exec");
                } else {
                    setTimeout(highchartCheck, 250);
                }
            }

            //Print Styling
            $('#one').find("rect").css({"width": "3.6in !important";});
            $('#two').find("rect").css({"width": "3.6in !important";});
            $('#three').find("rect").css({"width": "3.6in !important";});

            highchartCheck();


        }

}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-03 19:45:21

在运行函数之前,您只需要检查DOM是否已完全加载。

代码语言:javascript
复制
function doStuff() {
    // Set Attributes
    document.getElementById("highcharts-0").querySelectorAll("svg")[0].setAttribute("viewBox", "0 0 5.5in 3.6in");
    document.getElementById("highcharts-2").querySelectorAll("svg")[0].setAttribute("viewBox", "0 0 5.5in 3.6in");
    document.getElementById("highcharts-4").querySelectorAll("svg")[0].setAttribute("viewBox", "0 0 5.5in 3.6in");
    //Print Styling
    $('#one').find("rect").css({"width": "3.6in !important"});
    $('#two').find("rect").css({"width": "3.6in !important"});
    $('#three').find("rect").css({"width": "3.6in !important"});
}

if (window.matchMedia) {
    var mq = window.matchMedia('print');
    if (mq.matches) {
        // Call the function until true
        if (document.readyState == "complete" || document.readyState == "loaded") {
            // document is already ready to go - do what you want
            doStuff();
        }
    }
}
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35781147

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档