【问题标题】:Main js file cannot see elements values declared in another js file主 js 文件看不到在另一个 js 文件中声明的元素值
【发布时间】:2013-07-28 06:18:37
【问题描述】:

我在安装一个库时遇到了问题,但我很确定答案更笼统。

我制作了一个 js 文件,它使用以下代码计算“data-x”和“data-y”的值:

$(document).ready(function () {
    var x2 = -1920;
    var y2 = 0;

    var resX = $(window).width();
    var resY = $(window).height();
    var disX = (resX)/1920;
    var disY = (resY)/1080;

    $("#div2").attr('data-x',disX*x2);
    $("#div2").attr('data-y',disY*y2);
});

当我在页面加载后检查 Chrome 控制台时,所有值都正确显示并在其正确的 div 中,但是第一个 js 文件 (impress.js) 看不到这些值,除非它们被硬编码到 HTML文件。

我尝试切换每个文件的加载顺序,但无济于事。这是我的 html 的样子:

http://jsfiddle.net/gVdkL

我可以做些什么来让 impress.js(我下载的 js 库)查看我在 myjs.js 文件中计算的值?是加载方式的问题,还是 html 文档底部的 impress.init() 问题?

任何帮助将不胜感激!谢谢!

【问题讨论】:

    标签: javascript impress.js


    【解决方案1】:

    看看你的小提琴和你附加的代码,我想问题是你的代码将在 DOM 就绪事件上运行,impress().init() 将在解析时运行(很可能在 DOM 完全完成之前准备好了)。

    你可以在你的代码后面加上这一行:

    $(document).ready(function () {
        var x2 = -1920;
        var y2 = 0;
    
        var resX = $(window).width();
        var resY = $(window).height();
        var disX = (resX)/1920;
        var disY = (resY)/1080;
    
        $("#div2").attr('data-x',disX*x2);
        $("#div2").attr('data-y',disY*y2);
    
    
        impress().init(); // <-- init it here after the values are being set
    });
    

    【讨论】:

    • 没问题,如果这是一个正确的答案,你可能想接受它:)
    • 是的,只是在等待计时器 :) 再次感谢!
    猜你喜欢
    • 2018-09-26
    • 2017-06-13
    • 2020-07-17
    • 1970-01-01
    • 1970-01-01
    • 2022-11-28
    • 2012-06-12
    • 1970-01-01
    • 2012-10-14
    相关资源
    最近更新 更多