有什么区别
<a onclick="someFunction">
和
<a onclick="someFunction()">
一个使用括号而不是另一个,但使用两者的区别是什么?什么是"正确"的选择?如果我不使用任何href
属性会发生什么?
据我所知,在javascript中,using something = someFunc();
将该函数的返回值赋给something
变量.并且使用something = someFunc;
直接将函数(而不是其结果)分配给该变量(并且它主要用于将函数分配给事件).例如,我可以为onclick事件分配一个函数.
但是我不明白在一些html元素内联事件中使用时会发生什么,如示例中所示,因为赋值不是javascript变量,而是html属性,这恰好是一个事件?请解释.
而且,将内联onclick函数分配给锚(a
)以及其他元素(例如span div label
等)是否有区别?他们有同样的效果吗?
旁注:我一直在这里阅读关于如何在点击链接时运行一个函数,我已经明白是不应该"内联",而是使用不引人注目的javascript.(我提到它是为了避免对此进行辩论),但在我看到的例子中,他们没有提到我在内联时提到的两个选项的区别.
编辑:这个问题是因为在这里他们给出了一个答案,它没有在事件的函数中使用括号,没有人提到需要括号,所以我认为它是有效的.但我不知道使用()
与否有什么区别.
一个使用括号而不是另一个,但是使用两者有什么区别?
<a onclick="someFunction">
不会做任何事情。括号导致一个函数被调用。
拥有一个仅由标识符组成的语句(无论是函数名、变量还是其他任何内容)都不会执行任何操作(如果变量不存在则抛出引用错误除外)。
如果我不使用任何 href 属性会发生什么?
然后我会质疑你为什么首先使用一个<a>
元素。
而且,将内联 onclick 函数分配给其他元素(例如跨度 div 标签等)的锚点 (a) 是否有区别?
只是它们不是(默认情况下)可聚焦元素(也不是没有 href 属性的 a 元素),因此无法通过切换到元素并按 Enter 键来触发 click 事件。如果您想要一个元素在触发时对 JS 执行某些操作,并且在 JS 不可用时没有合理的回退,请使用按钮。