Wu.Country@侠缘

勤学似春起之苗,不见其增,日有所长; 辍学如磨刀之石,不见其损,日所有亏!

导航

[导入]JS里关于链接的小问题。

看这的一个问题:

<a href="javaScript:alert('herf')" onClick="javaScript:alert('onClick');">This
  is a test!</a>

先响应什么事件呢?结果是先响应OnClick,然后是Href!

再看这个:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>无标题文档</title>
</head>

<body>
<form name="form1" method="post" action="">
  <input name="m_msg" type="hidden" id="m_msg">
  <a href="javaScript:formSubmit('herf')" onClick="javaScript:formSubmit('onClick');">This
  is a test!</a>
  <script language="JavaScript">
<!--
 function formSubmit(m_message){
  form1.m_msg.value = m_message;
  form1.submit();
 } 
-->
</script>
</form>
<%
 Response.write(Request.Form("m_msg"))
%>
</body>
</html>

最后的结果应该很清楚了吧!最后输出是:herf !

那我们来看这个:

<a href="javaScript:;" onClick="javaScript:formSubmit('onClick');">This
  is a test!</a>

函数与页面都和上而的相同。结果会是什么呢?答案是:表单没有提交成功。如果在formSubmit函数里加入其它的内容,都可以成功,就是不能提交!于是我真不明白是为什么了?

因为OnClick事件在herf之前,理论上讲,应该先提交表单,再响应herf,所以应该成功的,但实际上不是这样的。想想上面的情况,两个不同的地方提交表单,事实上,第一个并没有提交,它只是先做一个预处理,如果没有其它的事件了,那么它会提交表单。而不幸的是,这里的href里的JS方法是空的,让页面误以为返回了空值,也就取消了提交。所以,上面的方法提交页面失败。

因此,我个人觉得,这样用可能会好一些:

<a href=="javaScript:My_Function();" >This is a test!</a>这是也ASP.net里常用的方法。

而在DW里,生成菜单的时候,有这样的用法:

<a href=="javaScript:;" >This is a test!</a>如果不用提交表单,而且不做任何事件处理,只是显示或者隐藏一些层的时候,可以这样。

以上方法要在IE6.0以上版本才能测试成功。


文章来源:http://computer.mblogger.cn/wucountry/posts/42315.aspx

posted on 2005-07-22 00:58  Wu.Country@侠缘  阅读(389)  评论(0编辑  收藏  举报