javascript - JavaScript 'myFunction' 不是一个函数,尽管它是
问题描述
我有类似的东西
let myFunction;
$(document).ready(function() {
myFunction = function(param) {
// ...
}
});
在我的 HTML 中,我有
<a href="javascript:void(0);" onclick="myFunction(1)">...</a>
现在它说Uncaught ReferenceError: myFunction is not defined
。
let myFunction;
$(document).ready(function() {
myFunction = function(param) {
console.log('running');
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<a href="javascript:void(0);" onclick="myFunction(1)">...</a>
好的,所以我尝试的是:
$(document).ready(function() {
function myFunction(param) {
// ...
}
});
但又一次,Uncaught ReferenceError: myFunction is not defined
。我真的不知道,我现在使用了第一段代码很长一段时间,突然之间,它不再起作用了(或者在我的上下文中,或者其他任何情况下)。对此的正确方法是什么?
我创建了一个 JSFiddle 以表明我尝试的方法确实不起作用(警报中的预期输出为 1 或 2,给出错误): https ://jsfiddle.net/kgdcwe4z/5/
解决方案
最好只使用 Jquery,如下所示:
<a href="javascript:void(0);" data-id="1" id="test">...</a>
$(document).ready(function() {
$("#test").on('click', function() {
const id = $(this).attr('data-id');
//doSomething considering the id as the param here
});
});
另一个只有 Javascript 的解决方案是:
const myFunction = function(param) {
// ...
}
<a href="javascript:void(0);" onClick="myFunction(1)">...</a>
使用您现有的代码,您可以通过闭包实现这样的目标:
$(document).ready(function() {
func = function(param) {
console.log('param => ', param)
}
})(func);
推荐阅读
- c# - C#:如何为容器类型指定默认参数值?
- php - 在解码和获取 json 值时出现错误?
- javascript - 音频文件无法读取为 PCM WAV、AIFF/AIFF-C 或 Native FLAC
- javascript - 后台阻止我的登录表单写入 ID 密码
- python - 保存/运行时 Python 脚本丢失
- python - 包含“灵活”模式的子集字符串行
- c# - 创建存储过程以显示具有来自另一列的连接列值的行
- react-admin - 添加自定义标头时使用选项而不是获取请求
- dialogflow-es - 对话流上下文
- google-cast - 是否可以转让 Chromecast 应用程序的所有权?