我在一次采访中被问到这个问题,一个 JavaScript 函数是这样的:
function a(){
/// ---- Some Code ---
}
现在在一个 html 按钮中单击
<button click= "a()">
<button click= "return a()">
<button click= "javascript a()">
这3个电话有什么区别?
我在一次采访中被问到这个问题,一个 JavaScript 函数是这样的:
function a(){
/// ---- Some Code ---
}
现在在一个 html 按钮中单击
<button click= "a()">
<button click= "return a()">
<button click= "javascript a()">
这3个电话有什么区别?
HTML 无效,但如果您onclick
当时有:
false
,将取消单击元素的默认操作)javascript
) 后跟空格,后跟函数调用如果是最后一个,javascript:a()
那么您将拥有一个完全无用的标签。
也就是说,这三个都是 HTML 的糟糕示例。你应该避免onclick
赞成addEventListener
。
<button onclick= "a()">
只需运行该功能a()
。
<button onclick= "return a()">
这将运行然后评估函数的响应a()
。如果此响应为假,则不会运行其他进一步的条件。
<button onclick= "javascript a()">
这行不通。<button click= "javascript: a()">
将与示例 1 的结果相同。
第一个和第二个之间的区别在于,第二个传递函数的返回值并使其成为事件处理程序的返回值。这使得函数可以返回false
以停止事件的默认操作。对于一个没有区别的按钮,因为没有默认操作,但如果它是一个链接,它会很有用。例子:
function handleClick() {
// do something here
return false;
}
<a href="fallback.html" onclick="return handleClick();">click me</a>
该脚本将阻止链接导航到fallback.html
.
第三个代码在两个方面不正确。就目前而言,它会导致语法错误。这个例子应该是:
<button onclick="javascript:a()">
有时人们出于习惯将javascript:
(not javascript
) 放在事件处理程序的首位,或者因为他们认为它应该在那里。它来自在链接中的 URL 中使用 Javascript:
<a href="javascript:alert('hello')">click me</a>
当这样使用时,它会告诉浏览器它是一段要运行的脚本,而不是要导航到的 URL。如果您在事件处理程序中错误地使用它,它将被解释为标签。它不会阻止脚本工作,因为它恰好是有效的语法,但它没用。