<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
<script type="text/javascript">
function redirect(){
var obj = event.srcElement;
alert(obj.innerHTML);
}
</script>
</head><body>
<!--方法一-->
<a href="javascript:redirect();">javascrpt</a><!--方法二-->
<a href="#" onclick="redirect();">javascrpt</a>
</body>
</html>
在网上看到一些帖子说方法一和方法二能达到同样的效果——我想应该说的是单击事件吧,即都能达到单击执行的目的???
但是上面的例子中方法一和方法二运行的效果却不一样——证明方法一和方法二的本质不一样
href="javascript:redirect();"与onclick="redirect();"究竟有哪些本质区别,或者说在上面的例子中为什么当用href="javascript:;"为什么获取不到event.srcElement???等高人指点上面的两个问题???
谢谢!!!

解决方案 »

  1.   

    1.点击超链接<a>后,会执行href指定的内容(文件或函数)。<a href="#" onclick="redirect();">javascrpt</a> 中的onclick会在超链接执行href指定内容前触发。所以说两者实际上最后都是要执行函数redirect();。
    2.获取不到event.srcElement是因为楼主没有传递event参数,正确写法如下:<a href="javascript:redirect(event);">javascrpt</a>function redirect(event){
        var obj = event.srcElement;
        alert(obj.innerHTML);
    }
      

  2.   

    真的挺奇怪的! 我试了下 <body>
    <!--方法一-->
    <a href="javascript:alert(this.innerHTML);">javascrpt</a><!--方法二-->
    <a href="#" onclick="alert(this.innerHTML);">javascrpt</a>
    </body>这样写就 可以 !方法1 居然不对!!!  很奇怪 很奇怪!!
      

  3.   

    对, 关于event, 2L就是我想说的, 你将event传入了以后, 它会默认参数类型并能找到srcElementa标签是一个特殊的标签, 它会在点击时强制转到指定href. (怎么发觉我重复了2L一遍.)
      

  4.   

    对. 
    IE不用传event进去, 它有默认的参数, 而别的内核没有, 必须手动传值进去
      

  5.   

    <a href="javascript:redirect(event);">javascrpt</a>
    这样写取不到event.srcElement是因为超链接是直接去执行函数redirect(event);没有触发事件,所以此时的event为null,自然就没有event.srcElement了。