0

我有以下代码:

<script type="text/javascript">
    var ops = {
        slideshow: {
            slices: 20,
            boxCols: 11,
            boxRows: 6,
            animSpeed: 750,
            pauseTime: 6000
        },
        tweets: {
            username: 'stigmahost',
            count: 6,
            refresh_interval: 120,
            auto_join_text_default: 'I said,',
            auto_join_text_ed: "I",
            auto_join_text_ing: "I am",
            auto_join_text_reply: "I replied to",
            auto_join_text_url: "I was looking at",
            just_now: 'Now',
            X_seconds_ago: '{x} seconds ago',
            about_a_minute_ago: 'About a minute ago',
            about_X_minutes_ago: 'About {x} minutes ago',
            about_an_hour_ago: 'About an hour ago',
            about_X_hours_ago: 'About {x} hours ago',
            about_a_day_ago: 'About a day ago',
            about_X_days_ago: 'About {x} ημέρες ago'
        },
        map:
        {
            latitude: 37.966667,
            longitude: 23.716667,
            zoom: 8
        }
    }
</script>

在该代码之后,我立即有了该代码:

<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?key=MyKey&sensor=true"> </script>
<script type="text/javascript" src="js/js.js"></script>
<script type="text/javascript" src="js/jquery.tweet.js"></script>

然后从js.js文件中,我尝试使用ops变量,但没有任何运气。你知道为什么我不能在js.js中使用变量ops吗?

在 js 文件中,我使用该代码来确定 ops 变量的类型:

console.dir(ops);

在我的控制台中,我得到了未定义的结果。

我做错什么了吗?


我取得了一些进展。js.js 文件是这样的:

jQuery(document).ready(
    function()
    {
        console.dir(typeof ops);
        ...
        File code here
        ...
    }
);

上面的代码在我的控制台中返回“未定义”

现在我尝试了:

console.dir(typeof ops);

jQuery(document).ready(
    function()
    {
        console.dir(typeof ops);
        ...
        File code here
        ...
    }
);

并在我的控制台中返回第一次尝试的“对象”和第二种类型的“未定义”。

那能帮上忙吗?

4

1 回答 1

2
$.getScript("js.js", function() {
    //declare ops-variable in here and use it
});

没有jQuery:

var Loader = function () {

}
Loader.prototype = {
require: function (scripts, callback) {
    this.loadCount      = 0;
    this.totalRequired  = scripts.length;
    this.callback       = callback;

    for (var i = 0; i < scripts.length; i++) {
        this.writeScript(scripts[i]);
    }
},
loaded: function (evt) {
    this.loadCount++;

    if (this.loadCount == this.totalRequired && typeof this.callback == 'function') this.callback.call();
},
writeScript: function (src) {
    var self = this;
    var s = document.createElement('script');
    s.type = "text/javascript";
    s.async = true;
    s.src = src;
    s.addEventListener('load', function (e) { self.loaded(e); }, false);
    var head = document.getElementsByTagName('head')[0];
    head.appendChild(s);
}
}

 var l = new Loader();
l.require([
"js.js"
function() {
    // do same stuff in this callback
});
于 2012-05-22T11:13:35.970 回答