<a onclick="someFunction"> and </a> <a onclick="someFunction()"></a>之间的区别是什么?

时间:2013-06-05 16:20:07

标签: javascript html

之间有什么区别

<a onclick="someFunction">

<a onclick="someFunction()">

一个使用括号而不是另一个,但使用哪一个有什么区别?什么是“正确”的选择?如果我不使用任何href属性会怎样?

据我所知,在javascript中,使用something = someFunc();将该函数的返回值赋给something变量。并且使用something = someFunc;直接将函数(不是其结果)分配给该变量(并且它主要用于将函数分配给事件)。例如我可以为onclick事件分配一个函数。

但是我不明白在一些html元素内联事件中使用时会发生什么,如示例所示,因为赋值不是javascript变量,而是html属性,恰好是一个事件?请解释一下。

而且,将内联onclick函数分配给锚点(a)和其他元素(例如span div label等)是否有区别?他们有同样的效果吗?

旁注: 我一直在阅读here关于如何在点击链接时运行一个函数,我已经明白应该完成“内联”,而是使用不引人注目的javascript。 (我提到它是为了避免对此进行辩论),但在我看到的例子中我们没有提到我在内联时提到的两个选项的区别。

编辑:这个问题是因为here他们给出的答案不使用事件函数中的括号,没有人提到需要括号,所以我认为它是有效的。但我不知道使用()是否有区别。

3 个答案:

答案 0 :(得分:4)

  

一个使用括号而不是另一个,但是使用它们的区别是什么?

<a onclick="someFunction">不会做任何事情。括号使函数被称为

语句只包含一个标识符(无论是函数名,变量还是其他)都不会做任何事情(如果变量不存在则抛出引用错误除外)。

  

如果我不使用任何href属性会发生什么?

然后我会问你为什么首先使用<a>元素。

  

而且,将内联onclick函数分配给锚点(a)与其他元素(例如span div标签等)是否有区别?

只有它们不是(默认情况下)可聚焦元素(也不是没有href属性的元素),因此无法通过Tab键到元素并按Enter键来触发click事件。如果你想要一个在触发时会对JS做一些事情的元素,并且当JS不可用时你没有合理的回退,那就使用一个按钮。

答案 1 :(得分:1)

事件处理程序属性的值是一系列Javascript 语句,而不是表达式。

没有为属性分配函数值;这是在该事件中执行的一段代码 省略括号,会产生一个无效的表达式语句。

答案 2 :(得分:1)

在单击函数上内联编写时,我们在单击元素时指定要以字符串形式执行的代码。

它相当于eval('someFunction()'); 我们不能写click ='someFunction',因为它等同于eval('someFunction'),它什么也不做。 如果您打算将单击处理程序绑定到锚标记,请不要忘记在锚标记中添加href ='#'属性。

与锚标记相比,将单击处理程序分配给span或div是没有区别的。