2015-01-16 122 views
1

我有一個函數,在控制更新期間被調用,其中'This'被傳遞,所以函數知道哪個控件正在更新。我也在頁面加載時調用函數來獲取初始值,但發送document.getElementById()似乎不起作用。我應該在這裏通過什麼?傳遞對象的JavaScript函數引用

例如:

<script type="text/javascript"> 

    window.onload = function() { 
     alert("Got to window.onload"); 
     materialSelectionChange(document.getElementById('SquaresDropDownList')); 

    }; 


</script> 
在js文件

...

function materialSelectionChange(obj) { 

alert("Got into function"); 
} 

此外,確實火上改變js函數正確

編輯

該問題似乎是JS文檔的加載時間。該函數沒有被成功調用,因爲JS文件顯然沒有完成加載。可能是因爲window.onload。如果我將該功能移入頁面而不是在JS文件中,它會起作用。有沒有一種方法可以添加延遲,所以我知道頁面,它的組件是完全加載的?

+0

我不知道爲什麼它不適合你,但這對我有用..試試這個.. http://jsfiddle.net/cv3saxd6/ –

回答

4

你是不是委託的窗口加載事件,要調用它,也是你缺少引號將ID:

window.onload = myFunction(document.getElementById(typeSelect)); 

嘗試圍繞它包裝:

window.onload = function() { 
    myFunction(document.getElementById('typeSelect')); //id in quotes 
}; 

編輯

你必須照顧js文件的導入,導入之前必須先調用函數:

<script src='your-script-file.js'></script> 

<script type="text/javascript"> 
    window.onload = function() { 
     materialSelectionChange(document.getElementById('SquaresDropDownList')); 
    }; 
</script> 
+0

這似乎也沒有做到這一點。在我的document.get中使用「而不是」是否重要?此外,在這種情況下,我將這個函數調用了大約30次以用於不同的選擇,我的警報觸發了列表頂部的選擇,但不會在我想調用的函數內觸發。 –

+1

@DanWier,您能分享您的更新和相關代碼嗎? – Arvind

0
<select id="typeSelect" onchange="myFunction(this)"> 

window.onload = function(){ 
    myFunction.bind(document.getElementById('typeSelect')); 
} 
+0

' ... 功能materialSelectionChange(OBJ){ 警報(「進入功能」); }' –

+0

對不起,我不知道這個論壇的格式 –

+0

編輯你的問題,並粘貼在那裏。 –

0

這個問題似乎是JS文件的加載時間。該函數沒有被成功調用,因爲JS文件顯然沒有完成加載。如果我將該功能移入頁面而不是在JS文件中,它會起作用。有沒有一種方法可以添加延遲,所以我知道頁面,它的組件是完全加載的?

相關問題