首页 新闻 会员 周边 捐助

对于事件函数在标签内赋值的格式问题如:加JavaScript :关键字,加return,加分号

0
悬赏园豆:5 [已解决问题] 解决于 2014-05-14 23:22

onblur="return verify (this)" 这里return的是返回值具体是什么?,在脚本里的verify函数是没有返回值?
onclick="this.value ='greeting and welcome '"这里为什么不加javascript写成:
onclick="javascript:this.value ='greeting and welcome '"

onclick="JavaScript :return OM(this.form);"上面都不用分号,怎么这里加分号了?
onsumbit="return validate(this);"这里加分号,加return?为什么呢?
<a href=JavaScript :onclick="return handler(argument)">这里加javascript,加return,不加分号了?自己乱加都可以吗?分号是不是加不加上去都有可以吗?

onclick="JavaScript :newwindow();"  怎么这个还要加关键字javascript吗?不是直接写成:onclick="newwindow()"  分号还用来干什么?


各位大神,能讲讲什么时候要加javascript,什么时候加分号(;)return有什么用?刚开始学的时候,书里的例子说,直接加javascript代码才有加个关键字javascript的如
<p name ="段落一"  onclick="JavaScript :color='red' ">标准的书里没有分号,没有return也没有调用函数

求大神指教,使用规则,我都糊涂了,自己有时候都分不清,双引号里的是字符串还是表达式了……

黑夜猫头鹰的主页 黑夜猫头鹰 | 初学一级 | 园豆:3
提问于:2014-05-13 17:37
< >
分享
最佳答案
0

(1)onclick="",双引号中的既不是字符串,也不是表达式,而是语句。所以我每条语句都会加上分号,额,实际上也不会有多条语句,有多条语句我就会提取成函数了,但是你也知道javascript是可以省略分号的,又不会报错。

(2)对于javascript,我就知道两个地方,一个是onclick="javascript:",另一个就是<a href="javascript:">,对于onclick,我是不写javascript前缀的,太麻烦,写了也可以正常运行。但是<a>标签写和不写就代表两种意思了,写了前缀,那么href的作用就和onclick一样了,不写前缀,href就是一个字符串URL,会进行跳转。

(3)onclick="return false;"会阻止默认行为,必须form表单中的submit按钮和reset按钮,以及<a>标签跳转,这些默认功能就不会执行,对于一个函数没有返回值,那么默认返回undefined。

可以参考这个:http://janesnail.blog.163.com/blog/static/169941442012421276676/

收获园豆:3
ThreeTree | 小虾三级 |园豆:1490 | 2014-05-13 18:56

其实对于javascript,我有个问题就是:【onclick="return false;"会阻止默认行为】最终结果等效于这样吗:onclick="false",但我又觉得好矛盾,一个事件onclick绑定竟然不是方法而是赋了一个false值,好难接受,求大牛讲讲他们在程序的本质机制是如何处理和绑定的!!!

黑夜猫头鹰 | 园豆:3 (初学一级) | 2014-05-13 22:05

@黑夜猫头鹰:这是我的理解,不一定对

(1)<input type="button" id="btn" name="btn" onclick="alert(123);" />

(2)<input type="button" id="btn" name="btn" />

function aa() {  alert(123);  } document.getElementById("btn").onclick=aa;

这两种方式,得到的结果是一样的,所以可以这么理解:onclick="",双引号中的内容是一个函数的函数体,那么return false;也就是这个函数的返回值是false.那么至于怎么处理这个返回值,那就是浏览器的事情了,我们了解到的就是如果返回值是false,那么浏览器会取消相应的默认行为。

ThreeTree | 园豆:1490 (小虾三级) | 2014-05-13 22:56

@ThreeTree: 我看了你给我链接,这个例子:

<a href="http://janesnail.blog.163.com/blog/#" onclick="action();return false;">link</a>  

最终onclick的值是多少?onclick=“action();”即action()的返回值?还是onclick=“return false”即false;

还是onclick等于【action()返回值+false】

黑夜猫头鹰 | 园豆:3 (初学一级) | 2014-05-14 00:08

@黑夜猫头鹰: 按照我的理解应该是:onclick=function() { action();return false; }

这样click事件发生后,就会执行这个函数

ThreeTree | 园豆:1490 (小虾三级) | 2014-05-14 09:09
其他回答(1)
0

1、如果verify(this)没有返回值,那么return的就是undefined

2、javascript前缀只是表示后面是js代码,一般在a标签的href上需要,事件上加不加不影响;

3、末尾的分号可见可不加;如果是多句,则需要在前面的语句加;

收获园豆:2
幻天芒 | 园豆:37205 (高人七级) | 2014-05-13 18:57

其实,我有点接受不了:onblur="return verify (this)",这算怎么回事啊?onblur事件绑定应该是函数才对,而且不应该给事件赋值;照你所说onblur="return verify (this)"最终返回underfine,那么不就算是结果为onblur="underfine ",有这样给一个事件赋值一个值得吗?我一下接受不了,纠结矛盾啊!!学了那么久c#也没看过给事件赋值的,只看过给事件绑定需要出发的函数,而且绑定函数都没有返回值,但这里毁了我的方法观了?求大牛缕缕我的思路错在哪里,感激感激

支持(0) 反对(0) 黑夜猫头鹰 | 园豆:3 (初学一级) | 2014-05-14 00:04

@黑夜猫头鹰: 每个语言的特性不一样,学习js,就得按照它的思路走。不要强制认为它就得和C#类似。

支持(0) 反对(0) 幻天芒 | 园豆:37205 (高人七级) | 2014-05-14 13:40
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册