2014-02-24 69 views
6

有没有办法像这样内联编写下面的代码?内联JavaScript onclick函数

<a href="#" onClick="function(){ 
    //do something; 
    return false; 
};return false;"></a> 

而不是做这个的:

<a href="#" onClick="doSomething(); return false;"></a> 

function doSomething(){ 
    //do something; 
} 
+6

你为什么要? –

+3

为什么?内联代码是可怕的,不可维护或可重用的 –

+1

,因为我在页面中回显它,并且我想保持它受限制。我不想多次重复doSomething。 – Toniq

回答

1

这并不推荐使用,但你可以做到这一切内嵌像这样:

<a href="#" onClick="function test(){ /* Do something */ } test(); return false;"></a> 

但我想不出任何情况下,这将比在其他地方编写函数并调用它更好onClick

+0

我试过这个,并在firefox中得到:SyntaxError:函数语句需要一个名字 – Toniq

+0

我已经更新了代码。现在应该工作。 – jvdub

+0

这个测试功能会在href范围之外被听到吗? – Toniq

5

这应该工作

<a href="#" onclick="function hi(){alert('Hi!')};hi()">click</a> 

您可以内嵌任何JavaScript的onclick里面,如果你是分配通过JavaScript的方法。我认为只是让代码更清洁,让脚本块保持你的js

12

你可以使用自我执行的匿名函数。这个代码将工作:

<a href="#" onClick="(function(){ 
    alert('Hey i am calling'); 
    return false; 
})();return false;">click here</a> 

看到JSfiddle

+1

Upvoting这个,但是......真的,我希望你有一个很好的理由,你写内联代码,这通常是不好的做法。 – quoo

+2

^^我可以看到重复代码时这是不好的做法,但匿名函数确实有它们的位置。我写了一个函数,调用一个自定义的boostrap确认模式。我希望它能够处理取消情况并在需要时唯一确认该情况。在其他地方编写这两个函数并且在不重用时必须在代码中搜索它们是很愚蠢的。 – eaglei22

+0

我的用例是用于解除加载启动画面。 onclick从DOM中删除启动画面。 –