2011-04-15 57 views
0

如何訪問在我的HTML文檔中初始化的對象?如何訪問另一個.js文件中的全局JS對象如何訪問在我的HTML文檔中初始化的對象?js-File

我的HTML的文件看起來是這樣的:

... 

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

    ... 

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

    .... 

如何調用controller.doAMethod()使用DOM的操作或simmilar外部Javascript的文件?

編輯: PPL,我有很多.js文件和我的控制器正在他的構造函數中創建另一個類的實例。在創建的類實例中,我需要訪問控制器來調用update-Function。 像:控制器 - >創建類的實例。 class - >需要調用controller.update()。 我怎麼存取權限控制在「類」 - 這就是所有

THX!

回答

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的使用會使它更加「 egant,當然,因爲你不會風險覆蓋任何現有onloads:

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

我建議你'window.contoller =新CTRLclass();' – Raynos 2011-04-15 15:40:14

+0

@Raynos - 尼斯,使用expando屬性窗口對象。 – 2011-04-15 15:41:45

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); 
+0

-1僅限Firefox代碼。 – Raynos 2011-04-15 15:39:04

+0

@Raynos:固定。謝謝。 – 2011-04-15 15:42:57

+0

總是使它看起來冗長:(。隨意推薦['ender'(http://ender.no.de/#intro)作爲一個輕量級的事件處理庫中選擇。'$(EL).bind(「負載「,Init)' – Raynos 2011-04-15 15:48:41

相關問題