我有一个<a>
元素应该运行代码而不是重定向。
这里有两个代码示例,我认为应该具有相同的效果,但它不会:
这有效:
<a href="#" onclick="alert('Works'); return false;" />
这不会:
<a href="#" onclick="return function() {alert('don't Work'); return false;};" />
他们俩不应该这样做吗? 是不是第二次尝试的表达式被评估,调用匿名函数并返回false?
谢谢!
答案 0 :(得分:6)
第二个例子定义了一个函数并返回它。它从不称呼它。
onclick="return function() {alert('don\'t Work'); return false;}();"
如果你打电话(并修正引用错误),那么你会得到同样的效果。
答案 1 :(得分:1)
没有。这不是有效的javascript,因为'
中的don't
过早地结束了字符串。将don't
替换为does not
,看看会发生什么。
看到昆汀回答你没有调用这个函数的事实!
答案 2 :(得分:1)
第二行返回一个函数对象,不运行它。 而是运行以下:
<a href="#" onclick="alert('Works'); return false;" >first link</a>
<a href="#" onclick="function x() {alert('don\'t Work'); return false;}; return x();" >second link</a>
此外,你需要逃避'角色'不要工作“。