1

我在一次采访中被问到这个问题,一个 JavaScript 函数是这样的:

function a(){
 /// ----  Some Code ---
}

现在在一个 html 按钮中单击

<button click= "a()">
<button click= "return a()">
<button click= "javascript a()">

这3个电话有什么区别?

4

3 回答 3

4

HTML 无效,但如果您onclick当时有:

  1. 只是一个函数调用。
  2. 返回函数调用的值(如果是false,将取消单击元素的默认操作)
  3. 引发语法错误,因为您不能有标识符 ( javascript) 后跟空格,后跟函数调用

如果是最后一个,javascript:a()那么您将拥有一个完全无用的标签

也就是说,这三个都是 HTML 的糟糕示例。你应该避免onclick赞成addEventListener

于 2013-08-05T12:47:56.940 回答
4
<button onclick= "a()">

只需运行该功能a()

<button onclick= "return a()">

这将运行然后评估函数的响应a()。如果此响应为假,则不会运行其他进一步的条件。

<button onclick= "javascript a()">

这行不通。<button click= "javascript: a()">将与示例 1 的结果相同。

于 2013-08-05T12:48:58.543 回答
0

第一个和第二个之间的区别在于,第二个传递函数的返回值并使其成为事件处理程序的返回值。这使得函数可以返回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。如果您在事件处理程序中错误地使用它,它将被解释为标签。它不会阻止脚本工作,因为它恰好是有效的语法,但它没用。

于 2013-08-05T12:57:04.717 回答