函数超出作用域
Function out of scope?
我有一个函数定义如下:
window.onload = function() {
var ids = document.getElementById("idname");
function myFunction(){
/...*use ids var in here*./
}
}
我试图从按钮onclick
在html中调用myFunction
:
<button onclick="myFunction();"></button>
但是它说myFunction
没有定义。我理解,因为这是在window.onload
内部。我该如何解决这个问题?我需要window.onload
,因为我需要使用document.getElementById("testID")
来获取内容。
不,你不需要我需要窗户。onload因为我需要使用document.getElementById(" testd ")来获取内容
window.onload
。您只需将代码放在文档中ID为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>
您在function
中定义了它,因此它被锁定在该范围内。也许你想在外边定义它:
function myFunction() {
var ids = document.getElementById("idname");
// ...
}
window.onload = function() {
// ...
}
需要注意的是,这是非常老派的JavaScript。你可以使用jQuery之类的东西来清理它,它看起来像这样:
$(function() {
// Any initialization after page load.
});
function myFunction() {
var ids = $('#idname');
// ...
}
相关文章:
- 监视函数从服务返回不起作用,但作用域函数起作用
- AngularJS:如何与其他控制器共享作用域函数和变量
- 直接在DOM事件处理程序中调用作用域函数的最短方法是什么
- 嵌套的Angular指令触发父对象上的作用域函数
- $uibModal从windowTemplate调用作用域函数
- 角度:创建可以调用作用域函数的自定义指令
- 在DOM(html)上下文中使用角度作用域函数时出现的问题
- 为什么我的作用域函数没有获取从模型传递的数据
- AngularJS在ngClass更改后执行作用域函数
- 控制台.log在 AngularJS 中执行作用域函数
- JavaScript 不作用域函数参数
- 本地作用域函数原型覆盖
- 在 AngularJS 中执行作用域函数内的服务后,范围变量不会更新
- 达到 10 次摘要迭代,中止(作用域函数问题)
- AngularJS在指令中附加作用域函数
- Javascript eval() for Json 字符串注入了全局作用域函数
- JavaScript本地作用域函数
- 从指令调用父作用域函数
- AngularJS ng控制器指令不接受javascript中的变量(作用域函数),也不给出任何错误
- Javascript:从类内部创建全局作用域函数