我有一个定义如下的函数:
window.onload = function() {
var ids = document.getElementById("idname");
function myFunction(){
/...*use ids var in here*./
}
}
我试图通过html
中的按钮onclick调用myFunction<button onclick="myFunction();"></button>
但是它说没有定义myFunction。我明白因为这是在window.onload里面。我怎样才能解决这个问题?我需要window.onload,因为我需要使用document.getElementById(“testID”)来获取内容
答案 0 :(得分:4)
我需要window.onload,因为我需要使用document.getElementById(&#34; testID&#34;)来获取内容
不,你不需要window.onload
。您只需将代码放在之后文档中标识为testID
的元素。
示例:
<div id="testID"></div>
<script>
var ids = document.getElementById("testID");
function myFunction(){
/...*use ids var in here*./
}
</script>
但是,如果你想继续使用window.onload
,那么我建议不使用内联事件处理程序,但使用JS绑定处理程序:
window.onload = function() {
var ids = document.getElementById("testID");
ids.onclick = function(event){
/...*use ids var in here*./
}
};
(无论如何,这可能是件好事。)
最后,您可以使用this
或event.target
获取对事件处理程序内元素的引用:
<div id="testID"></div>
<script>
document.getElementById("testID").onclick = function(event) {
// access element via `this` or `event.target`
};
</script>
答案 1 :(得分:1)
您在function
内定义了它,因此它已锁定到该范围。也许你想在它之外定义它:
function myFunction() {
var ids = document.getElementById("idname");
// ...
}
window.onload = function() {
// ...
}
请注意,这是极老式JavaScript。你可以使用像jQuery这样的东西来清理它,看起来像这样:
$(function() {
// Any initialization after page load.
});
function myFunction() {
var ids = $('#idname');
// ...
}