我现在这么做的.当点击相同的用户控件,当点击页面空白处只有最后一个用户控件下拉能正常隐藏.<script language="javascript" type="text/javascript">
     window.onload = function()
        {
           document.onclick=btnEvent;
        }
      
      function btnEvent() 
        {
          divs = document.getElementsByTagName("DIV");
          var ss;
          if(window.event.srcElement.tagName!="IMG")
            {
               obj=document.getElementById('<%= ddldiv.ClientID %>');
               if(obj.id)
                {
                  for(var i=1;i<=obj.tagName.length;i++)
                   {
                      divid="Userddl"+i+"_ddldiv";
                   }
                   document.getElementById(divid).style.display='none';
                }
            } 
        } 
</script>
我如果用这个是控件里的一段<img src="../images/001.gif" onclick="javascript:document.getElementById('<%= ddldiv.ClientID %>').style.display='block';" id="img1"/> 
本来我想通过给img加runat="server"的来获得当前点击的是哪个imgid,一加js就报错!请问我该怎么写呢..

解决方案 »

  1.   

    这个控件主要用到一个TextBox 控件,一个图片控件img,一个gridview控件.做个通用的模拟多列可输入下拉控件.
    点击img控件显示div1有什么方法当再次点击图片或者控件外页面任意空白处隐藏div.
    谁作过类似的,希望能提供下!做下研究.谢谢!
      

  2.   

    因为你同一个个名称的function注册了多次啊!
      

  3.   

    详细解释:你的每一个UserControl都会输出上述<script>,这样就存在多个funtion btnEvent(),这肯定会导致引发脚本错误,然后浏览器以容错的方式来执行——承认最后一个function btnEvent()是有效的,那么会发生什么事就可想而知。在制作控件的时候,不能仅仅考虑自身的情况,一定要考虑自己的控件会在页面上被放置多个,然后考虑输出的<script>如何兼容这种情况。例如那些Validator吧,它们就能够任意多个共存。原因已经解释了,如果你知道怎么使用Page.ClientScript就应该知道如何通过注册脚本避免同一段脚本冲突的了。还是搞不定再说吧。
      

  4.   

    前面都说了,是不是那些原因造成的 ?先看看你的客户端生成的html再说