RT:就一个展开层和隐藏层的一个事件,每次页面加载的时候都要点击两下才能够调用函数,页面中写的很简单<a href="javascript:void(0)" onclick="dosomething();return:false;">点击</a>,页面第一次加载的时候要点击两次,才能有作用,以后就可以了,但是我想第一次点击就起作用,求教各位大大该如何解决!!??

解决方案 »

  1.   

    应该是dosomething()内部哪里没写好吧又或者里面某些功能依赖于页面的某些元素,可能你点击的时候,那个元素还没存在??
      

  2.   

     <script type="text/javascript" >
      <!--
            function showdiv(targetid, clickid)
        {
                var target = document.getElementById(targetid);
                var click = document.getElementById(clickid);            if (target.style.display == "none") 
                {
                    target.style.display = "block";
                    click.innerHTML = "Moreinformation<<";
                    var inps = document.getElementById(targetid).getElementsByTagName("input");
                    for (var j=0, len=inps.length; j<len;j++)
                     if (inps[j].type == "text")
                     {
                       inps[j].focus();
                       break;
                     }
                }
                else {
                      target.style.display = "none";
                      click.innerHTML = "Moreinformation>>";
                     }
               
            }
    -->
    </script>
    页面中调用
    <a id="clickid" href="javascript:void(0)" onclick="dosomething();return:false;">Moreinformation>></a>
    下面就是各个要操作的层了默认设置了style="display:none"
    <div id="div1">//div1就是targetid
    </div>
      

  3.   

    这样试试
     if (target.style.display == "block")  
      {
      target.style.display = "none";
      

  4.   

     经过本人试验和检查发现竟然是外部的css不能 用document.getElementById("div").style.display
    来获取,只能用obj.currentStyle.display(just for IE)来表示,不然取得都是"",上面的刚好能调换顺序后第一次判断就能够碰巧实现点击后执行动作,不然像我刚开始没变换顺序,由于取到的属性是""所以即使css里写的是none但是,还是不会执行js属性=="none",而会执行else将属性变为none再继续执行,总之总算明白了,也谢谢大家的回答!
      

  5.   

    原来你说的"下面就是各个要操作的层了默认设置了style="display:none""是指在css样式中直接定义的你可以使用以下方法进行获取
    function getStyleByAttr(a,b){
        return a.currentStyle?a.currentStyle[b]:window.getComputedStyle(a,null)[b];
    }
    var o=document.getElementById('id');
    var val=getStyleByAttr(o,'display');