内联JavaScript onclick函数

Ton*_*niq 29 javascript onclick

有没有办法像这样编写以下内联代码?

<a href="#" onClick="function(){
    //do something;
    return false;
};return false;"></a>
Run Code Online (Sandbox Code Playgroud)

而不是这样做:

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

 function doSomething(){
    //do something;
 }
Run Code Online (Sandbox Code Playgroud)

Muk*_*mar 44

您可以使用自执行匿名函数.这段代码可以工作:

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

JSfiddle

  • 赞成这个但是......真的,我希望你有一个很好的理由来编写内联代码,这通常是不好的做法。 (2认同)
  • ^^我可以看到重复代码时这是不好的做法,但匿名函数确实有它们的位置.我写了一个调用自定义boostrap确认模式的函数.我希望它能够处理取消的情况,并在需要时对该实例进行唯一确认.将这两个函数写在别处是很愚蠢的,并且当它们不被重用时必须在代码中搜索它们. (2认同)
  • 我只是用这个方法在我不控制的页面中插入了一个用于调试的shim,所以我无法添加额外的功能。这很丑陋,但它有效 (2认同)

小智 16

这应该工作

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

您可以在onclick中内联任何javascript,就好像您通过javascript分配方法一样.我认为只是让代码更清晰,将js保存在脚本块中


Kar*_*loX 15

根据 @Mukund Kumar 给出的答案,这里有一个将事件参数传递给匿名函数的版本:

<a href="#" onClick="(function(e){
    console.log(e);
    alert('Hey i am calling');
    return false;
})(arguments[0]);return false;">click here</a>
Run Code Online (Sandbox Code Playgroud)


jvd*_*dub 6

这不是真正推荐的,但您可以像这样内联执行所有操作:

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

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