2015-01-16 68 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文件中,它会起作用。有没有一种方法可以添加延迟,所以我知道页面,它的组件是完全加载的?

相关问题