2012-12-27 71 views
0

我想要一個函數來觸發一次身體加載。我知道你可以從body標籤做到這一點,但如果可能的話,我寧願從JS做到這一點。設置身體onload而不使用<body>標記

例如:document.getElementsByTagName('body').onload = someFunc();

這並不爲我工作,但我認爲這顯示了我基本上是想幹什麼。

編輯:

我已經試過的答案,似乎是問題是,它是調用函數加載它在體內標記使用的元素之前,即使我把腳本標記在體內。 這就是它需要做:

var buttonElements = document.getElementsByClassName('button');

如果我做的:

alert(buttonElements)

它會彈出0,但是當我在控制檯創建一個變量,它會用元素成功地填充它。

+1

你應該嘗試在window.onload http://stackoverflow.com/questions/588040/window-onload-vs-document-onload – Ray

+0

「someFunc」 應是'someFunc',不是?你也可以使用'document.body'的快捷方式。 – raina77ow

+0

反對票是因爲''「'? –

回答

5

你有什麼幾乎工作,但你必須在<body>標籤結束導入您的JavaScript,你必須索引的第一個結果:

document.getElementsByTagName('body')[0].onload = someFunc; 
+0

謝謝,對不起,我有一個心理屁。這工作<3 – MichaelMitchell

4

像這樣:

window.onload = someFunc; 

但是,如果你的函數接受arguemnts,你需要這樣的匿名函數:

window.onload = function(){ 
    someFunc(arg1, arg2); 
} 

BTW,除了修復@Pointy您的代碼中提到,你也可以這樣做:

document.body.onload = someFunc; 
1

不要使用引號...如果你嘗試反正運行"someFunc"()將無法​​正常工作。

window.onload = someFunc; 
0

如果你使用jQuery:

$(document).ready(function() { 
    callMyFunction(); 
}); 
相關問題