2016-03-03 62 views
1

我在我的HTML中使用这样的:的JavaScript:的onclick并返回false

<a href="#" onclick="preload('12345');return false;">Click</a> 

它调用函数预紧()上的外部JS文件和工作正常为止。

但我有几十个这样的链接,并希望删除这些“返回false”,并只把一个直接放在js文件中的preload()函数中。

但它会一直被忽略? “返回false”是否仅在onclick =“...”内起作用?

回答

9
function preload() { 
    // some code 
    return false; 
} 

<a href="#" onclick="return preload('12345');">Click</a> 

或使用addEventListener

例如:

<a href="#" class="link">Click</a> 
<script type="text/javascript"> 
    document.querySelector('.link').addEventListener('click', function (e) { 
     // some code; 

     e.preventDefault(); 
    }, false); 
</script> 
+1

基本上,解释为什么它是这样的,onclick块的内容是一个函数。评价'false;'是有效的(如果愚蠢的话)JavaScript,但基本上JavaScript要求你实际返回false。 – Compass

0

我也许建议不使用的onClick(),而是使用类似jQuery的。

+1

jQuery吃太多千字节;) – Chama

+0

哈哈。好吧,我之前使用过onClick(),但在我所能做的事情上非常有限。但是好运,害怕我全都没有想法。 –

0

我想如果你把它放到preload函数中而在onclick事件刚刚就把return false都行了。也许你已经试过这个代码?

<a href="#" onclick="return preload('12345');">Click</a> 
0

在直列式onclick属性把return false;防止默认行为(导航)的发生。您还可以通过在JavaScript中打开onclick属性来实现此目的(即将.onclick属性指定为返回false的函数),但这种做法被视为过时并且可能有害(它会覆盖附加到该事件的任何其他事件侦听器, 例如)。

防止发生元素的默认点击行为的现代方法是简单地从附加的事件侦听器中调用触发事件的.preventDefault()方法。您可以将听众的标准方法,用.addEventListener()

一些例子:

// this works but is not recommended: 
 
document.querySelector(".clobbered").onclick = function() { 
 
    return false; 
 
}; 
 

 
// this doesn't work: 
 
document.querySelector(".attached").addEventListener("click", function() { 
 
    return false; 
 
}); 
 

 
// this is the preferred approach: 
 
document.querySelector(".attachedPreventDefault").addEventListener("click", function(e) { 
 
    e.preventDefault(); 
 
});
<a href="/fake" onclick="return false;">If you click me, I don't navigate</a><br/> 
 
<a class="clobbered" href="/fake">If you click me, I don't navigate</a> 
 
<br/> 
 
<a class="attached" href="/fake">If you click me, I navigate</a> 
 
<br/> 
 
<a class="attachedPreventDefault" href="/fake">If you click me, I don't navigate</a>

0

尝试将返回错误的条款为内联函数

<input onclick="yourFunction();return false;">