javascript - 为什么 onclick = function() 在文档准备好的内部不起作用?
问题描述
查看何时应该使用 jQuery 的 document.ready 函数?并且表单提交按钮 onclick 没有调用我的 JS 函数,给人一种感觉,使用$document.ready(function(){})
应该对代码没有害处,而是为了好的。
onclick
但是当我在按钮的方法中输入一个函数时,ready()
语句里面的函数不会被执行。为什么这样?
例如,此代码不会发出警报
$(document).ready(function(){
function f(){
alert("alert");
}
})
/*function f(){
alert("alert");
} */
<button onclick="f()">
My Button
</button>
我知道如果我使用 jQuery 选择器使其工作,它会 ( $("button").click(f)
)。但是为什么这个方法会失败?
解决方案
这是范围的问题——在函数内部声明的函数不能在外部函数外部访问,就像在函数内部声明的变量一样:
(function(){
var a = 'hello';
function b () {
console.log(a);
}
})();
a; // syntax error - a is undefined
b(); // syntax error - b is undefined
您可以通过将函数分配给全局变量来使其工作:
var f;
$(document).ready(function(){
f = function(){
alert("alert");
}
})
推荐阅读
- google-apps-script - Google 幻灯片中链接的 Google 表格
- php - 从 PHAR 文件对 tmp/ 进行读/写访问
- python - success_url django中的无类型对象
- node.js - Mongodb expressjs通过ref删除数组内的一个对象
- typescript - Jest (ESM) 问题在单元测试中从 React Native 加载文件
- mysql - 如何在 MySql 中返回不同的列而不是条件列?询问
- javascript - Javascript将类添加到除一个之外的多个元素
- r - 在 Windows 上导入 R(用于 xkcd 包)中的 xkcd 字体
- python - 用户输入错误值后如何制作python循环程序?
- php - 如何在不使用 API 的情况下访问 HTML 登录中的不安全凭据?