如何在另一个.js文件中访问全局JS-Object

时间:2011-04-15 15:28:42

标签: javascript

如何访问在我的HTML-Document中初始化的对象?

我的HTML-Document看起来像这样:

    ...

<script type="text/javascript" id="controller">var controller = false;</script>

    ...

<body onload="controller = new CTRLclass()">

    ....

如何使用DOM-Operations或simmilar在外部Javascript文件中调用controller.doAMethod()?

编辑: PPL,我有很多.js文件,我的控制器正在他的构造函数中创建另一个类的实例。在创建的类实例中,我需要访问控制器以调用update-Function。 喜欢:控制器 - &gt;创建类的实例。 class - &gt;需要调用controller.update()。 我如何在'class'中访问控制器 - 多数人

THX!

2 个答案:

答案 0 :(得分:1)

您不需要onload标记来启动onload任务。只是把这是外部的javascript文件:

var controller = false;
function Init(){
    controller = new CTLRclass;
}
function addEvent(el, eType, fn, uC) {
    var uC = uC || true;
    if (el.addEventListener) {
        el.addEventListener(eType, fn, uC);
        return true;
    } else if (el.attachEvent) {
        return el.attachEvent('on' + eType, fn);
    } else {
        el['on' + eType] = fn;
    }
}
addEvent(window, 'load', Init);

答案 1 :(得分:0)

我实际上无法想象你为什么要这样做。简单地删除上面的所有Javascript,所以你只需要:

...

<script type="text/javascript" src="myjsfile.js"></script>

...

<body>

....

在myjsfile.js中做了类似

的事情
window.onload = function(){
    var controller = new CTRLclass();
}

如果它必须是全局的,那么你可以将它移到onload函数之外:

var controller = false
window.onload = function(){
    controller = new CTRLclass();
}

当然,使用jQuery会使它更优雅,因为你不会冒险覆盖任何现有的onloads:

var controller = false
$(document).ready(function(){
    controller = new CTRLclass();
});