我无法在锚标记的onclick事件中访问
javascript函数.
在某些情况下,它是有效的,在某些情况下,不是.
任何人都可以告诉它为什么会这样.
HTML代码 –
<a href='#' class="btn waves-effect waves-light bg-blue" id="startDeviceScan" onclick="call286Dart123('CollectSysInfo','3c6c3e33bb65e8331bf4c91c0670492e');" >start device scan </a>
Javascript功能:
function call286Dart123(a,b) { console.log(a + "\t" + b); }
小提琴链接
解决方法
编辑由于@Dellirium在评论中指出,我修改了我的答案以反映这里的真实问题.但是,解决方案仍然有效.
问题是JSfiddle默认情况下使JavaScript在文档加载上运行.这意味着JS在HTML之后加载,因此在HTML中初始化onclick事件时不会定义它.
封闭似乎是一个问题.如果你在JSfiddle中将“加载类型”设置为“onload”,这就是它在内部的作用(你可以检查开发者控制台):
<script type="text/javascript"> //<![CDATA[ window.onload=function(){ function call286Dart123(a,b) { console.log(a + "\t" + b); } } //]]> </script>
这意味着它被包装在onload事件的匿名事件处理程序中.由于变量(和函数)作用域受JavaScript中的函数约束,因此它们不适用于全局作用域
解决方案:要解决此问题,请在“JavaScript”菜单下将“加载类型”更改为“无包装& t; head>”.这很容易=).
请参见this JSFiddle fork作为工作示例.
换句话说,这只是将其更改为(再次,您可以通过访问我的JSfiddle上的开发人员控制台来验证这一点):
<script type="text/javascript"> //<![CDATA[ function call286Dart123(a,b) { console.log(a + "\t" + b); } //]]> </script>
其中,cal286Darkt123将在全局范围内定义(在任何其他函数之外).
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。