JavaScript 错误:未捕获类型错误:foo 不是一个函数
JavaScript Error: Uncaught TypeError: foo is not a function
由于某种原因,JavaScript似乎无法识别我的函数。
我有一个HTML的按钮:
<button type="button" class="btn btn-default" id="lightOn" onclick="lightOn()">On</button>
然后是一些JavaScript:
function lightOn(){
$("#lightOn").addClass("active");
$("#lightOff").removeClass("active");
socket.emit("setting", {"light":"on"});
}
当我单击按钮时,出现错误:
未捕获的类型错误:lightOn 不是一个函数
知道为什么这行不通吗?
谢谢。
问题是你给你的元素相同的id:"lightOn"
。在此作用域中,lightOn
是元素,它隐藏函数(阅读更多)。
一个简单的解决方案是为元素提供不同的 id 或为函数提供不同的名称。
更好的方法是将脚本与 HTML 分开:
<button type="button" class="btn btn-default" id="lightOn">On</button>
$(function(){
$('#lightOn').click(function() {
$("#lightOn").addClass("active");
$("#lightOff").removeClass("active");
socket.emit("setting", {"light":"on"});
});
});
而不是使用 onclick
属性,在 JavaScript 中添加事件侦听器要干净得多,如下所示:
$('#lightOn').on('click', function() {
$("#lightOn").addClass("active");
$("#lightOff").removeClass("active");
socket.emit("setting", {"light":"on"});
});
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button type="button" class="btn btn-default" id="lightOn">On</button>
试试这个:
var lightOn = function(){
}
你可以在vanilla JS中完成所有这些操作,而不是使用jQuery:
var lightOn = function(){
document.getElementById('lightOn').className += " active";
document.getElementById('lightOff').className.replace(/'bactive'b/,'');
socket.emit("setting", {"light":"on"});
}
可以在这里找到var lightOn = function()
和function lightOn()
的一个很好的解释:https://stackoverflow.com/a/336868/1887101
相关文章:
- Webpack/Rect:遵循egghead.io教程,但出现错误:您可能需要一个合适的加载程序来处理此文件类型
- 是什么让一个“;Uncaught RangeError:超过了最大调用堆栈大小“;错误(Chrome,在其他浏览器中显示
- 从我的控制器返回一个不同于200的代码以触发ajax错误,这被认为是一种好的做法吗
- 预期响应包含一个对象,但在angular js中得到一个数组错误
- 错误:$injector:modulerr模块错误(我的第一个SPA应用程序)
- 一个ajax循环有两个输出错误innerHTML
- 在量角器中创建一个.txt错误输出文件是手动的,而不是控制台错误
- 我怎么能把一个错误当作未捕获的错误来记录呢
- 我需要一个jQuery函数来只工作在700px以上的屏幕大小,无法在我的代码中发现错误
- 在这个使用hasOwnProperty的对象扩展程序中有一个错误,I'我不确定那个bug是什么,也不确定这个扩展
- 从另一个JSAppleScript运行另一个JS AppleScript时出现权限错误
- 当张贴到数据库时,I'我得到了一个“;可以't在它们被发送错误之后设置报头”;
- javascript window.location在检查firebug时给了我一个错误的url路径
- 调试器;[错误]194:11:标识符是一个保留字
- new SharedWorker(“whatever.js”)返回一个错误
- 页面上的2个表单带有JS验证-其中一个抛出电子邮件验证错误
- JQuery关注上一个点击的输入错误
- 在一个函数中,我有一个未捕获的语法错误:意外的标记else
- 未捕获的引用错误——一个函数工作而另一个不起作用
- 图表API错误——[一个或多个参与者未能绘制()]