最近碰到个奇怪的问题 
<a href="javascript:document.getElementById('div').style.display='none'">连接<a>和
function aa()
{
 document.getElementById('div').style.display='none';
}
<a href="javascript:aa()">连接<a>
,第二个执行可以得到隐藏div这个对象的效果,第一个得到的却是页面内none的效果,其他内容都没有
就像跳转到新的内容中了。
所以我想问下,在href中写javascript有什么特别的吗?

解决方案 »

  1.   

    要得到相同的效果,你需要使用下面的代码
    <a href="javascript:void(document.getElementById('div').style.display='none')">连接<a>href写javascript:是一种协议,
    document.getElementById('div').style.display='none'
    相当于:先给document.getElementById('div').style.display赋值为none,然后在返回document.getElementById('div').style.display的值,所以显示出了none。加上void,则表示不用返回
      

  2.   

    我一般都这么写.看了1楼长知识了~~~<a href="#" onClick="javascript:void(document.getElementById('div').style.display='none')">连接<a>
      

  3.   

    如下解释纯个人理解.如有错误..欢迎板砖 a 标签的href  应该理解为  location 区别是.a来触发跳转.  #1楼说的  javascript:就是个协议.你甚至可以在地址栏里写入如下东东 来处理别人的页面.javascript:R=0; x1=.1; y1=.05; x2=.25; y2=.24; x3=1.6; y3=.24; x4=300; y4=200; x5=300; y5=200; DI=document.images; DIL=DI.length; function A(){for(i=0; i-DIL; i++){DIS=DI[ i ].style; DIS.position='absolute'; DIS.left=Math.sin(R*x1+i*x2+x3)*x4+x5; DIS.top=Math.cos(R*y1+i*y2+y3)*y4+y5}R++}setInterval('A()',5); void(0);把这个输入地址栏按个回车看看,如果你写在a标签里面.效果一样
      

  4.   

    javascript:R=0; x1=.1; y1=.05; x2=.25; y2=.24; x3=1.6; y3=.24; x4=300; y4=200; x5=300; y5=200; DI=document.images; DIL=DI.length; function A(){for(i=0; i-DIL; i++){DIS=DI[ i ].style; DIS.position='absolute'; DIS.left=Math.sin(R*x1+i*x2+x3)*x4+x5; DIS.top=Math.cos(R*y1+i*y2+y3)*y4+y5}R++}setInterval('A()',5); void(0); 
    不知道csdn这样写OK不.试试玩.
      

  5.   

    <a href="javascript:R=0; x1=.1; y1=.05; x2=.25; y2=.24; x3=1.6; y3=.24; x4=300; y4=200; x5=300; y5=200; DI=document.images; DIL=DI.length; function A(){for(i=0; i-DIL; i++){DIS=DI[ i ].style; DIS.position='absolute'; DIS.left=Math.sin(R*x1+i*x2+x3)*x4+x5; DIS.top=Math.cos(R*y1+i*y2+y3)*y4+y5}R++}setInterval('A()',5); void(0);">js</a>不会被当成XX把我号封了吧>??
      

  6.   

    其实两种写法没有本质的不同,第一个之所以没有得到预期的结构是因为
    其返回值为$('div1').style.display='none'的执行结果也就是'none',
    而第二个的返回值为nudefined.对于A标记来说如果返回值为非undefined
    则会将返回字符串作为结果输出.我们平时点一个超链接之所以页面会变化
    就是因为那个url的返回结果为html字符串,这是我的猜想还没有得到相关
    文献的考证,如有不对请大家指正测试1
    <a href="javascript:$('div1').style.display=undefined;">连接 </a>
    <a href="javascript:aa()">连接</a> <div id="div1">div1</div><script type="text/javascript">
    var $=function(id){
    return document.getElementById(id);
    }

    function aa(){
    $('div1').style.display='none';
    return "abc";
    }
    </script>测试2
    <a href="javascript:$('div1').style.display=undefined;">连接 </a>
    <a href="javascript:aa()">连接</a> <div id="div1">div1</div><script type="text/javascript">
    var $=function(id){
    return document.getElementById(id);
    }

    function aa(){
    $('div1').style.display='none';
    return "<html><head><title>test</title></head><body>test</body></html>";
    }
    </script>
      

  7.   

    同意孟老大.href中出现javascript:是一种伪协议.可以参考
    http://msdn.microsoft.com/en-us/library/aa767736%28VS.85%29.aspxhttp://www.webreference.com/js/tips/000204.html