[英]anonymous function in javascript error
我正在尝试运行一个非常基本的代码:
<a href="#" onClick="function(event){
event.preventDefault();
document.getElementById('LogOut-form').submit();
}">LogOut</a>
我什至不是很确定,如果这是正确的,但是当我单击链接时,我确实看到了错误。
未捕获到的SyntaxError:意外令牌(
我只想使用这样的方式提交表单,是否缺少某些内容? 如果可以,那将是什么解决方案?
当您使用onClick
声明函数时,请使用IIF表达式
<a href="#" onClick="(
function(event){
event.preventDefault();
document.getElementById('LogOut-form').submit();
})(event)
">LogOut</a>
<a href="#" onClick="(function(event){event.preventDefault();document.getElementById('LogOut-form').submit();})(event)">LogOut</a>
或不使用函数表达式
<a href="#" onClick="event.preventDefault(); document.getElementById('LogOut-form').submit();">LogOut</a>
但是,我建议您摆脱难看的内联单击处理程序,并且不要在老旧的坏习惯中使用内联单击处理程序。 您应该使用addEventListener绑定事件
的HTML
<a href="#" id='logout'>LogOut</a>
脚本
document.querySelector('#logout').addEventListener('click', function(event){
event.preventDefault();
document.getElementById('LogOut-form').submit();
}, false);
<a href="#" onClick=" event.preventDefault(); document.getElementById('LogOut-form').submit(); ">LogOut</a>
要么
function sendData (event) { event.preventDefault(); document.getElementById('LogOut-form').submit(); }
<a href="#" onClick="sendData()">LogOut</a>
您尝试在其中使用函数表达式的上下文期望function
关键字启动函数声明。
函数声明必须具有名称。
无论如何,在其中放置一个函数毫无意义:您永远不会调用它。
onclick
属性的值是函数主体。
如果您打算沿着这条路线走,那么您的代码将如下所示:
onclick="event.preventDefault(); document.getElementById('LogOut-form').submit();"
但是不要那样做!
内在事件属性由于多种原因而令人恐惧。 将事件处理程序与JavaScript绑定。
<a href="#">LogOut</a>
document.querySelector("a").addEventListener("click", function(event){
event.preventDefault();
document.getElementById('LogOut-form').submit();
});
但是也不要这样做!
您具有指向页面顶部的链接,然后使用JavaScript“增强”该表单来提交表单。
如果JavaScript失败,则链接到页面顶部没有任何意义。
在应用JavaScript之前: 选择具有最适当语义和默认功能的HTML 。
在这种情况下,这意味着使用提交按钮 。
<button>LogOut</button>
如果您不喜欢它的外观,请应用CSS对其进行样式设置。
button { text-decoration: underline; color: blue; background: none; border: none; padding: 0; display: inline; }
<button>LogOut</button>
您在onClick
声明了函数,应该调用它。 在外部定义函数,然后像myFunction()
一样从onClick
调用它。
我认为您不能以这种方式直接调用函数,因为该代码试图创建一个新函数,而不是执行该函数。 您应该在某个地方创建一个函数,并在onclick
事件中调用它。 例如:
function myFunction(evt) {
evt.preventDefault();
document.getElementById('LogOut-form').submit();
}
<a href="#" onClick="myFunction">LogOut</a>
如果要将click事件直接绑定到HTML元素,则应使用如下所示的标准方法:
<html>
<head>
</head>
<body>
<form id="LogOut-form" type="submit"></form>
<a href="#" onClick="buttonClicked(event)">LogOut</a>
</body>
<script>
function buttonClicked(event){
event.preventDefault();
document.getElementById('LogOut-form').submit();
}
</script>
</html>
在此, buttonClicked()是一个函数,只要单击触发就将调用该函数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.