一个页面上有几个按钮,它们调用同一个函数showpop()
点击不同的按钮时,显示不同的层,
我如何判断点击了哪个按钮呢。
考虑到这个按钮以后还要添加,如果根据id一个一个判断的话,非常麻烦,如何将一个按钮和一个层的显示对应起来呢?

解决方案 »

  1.   

    递归target与parentNode 找到tagName == "DIV"
      

  2.   

    首先将这个层作为一个属性赋给按钮,例如
    someButton.relatedItem = anyDiv;someButton.onclick = showpop;
    利用循环也可以,按实际情况。然后将写事件
    showpop(e){
    var evt = e || window.event;
    var evtTarget = evt.target || evt.srcElement;
    eveTarget.relaerdItrm.style = [隐藏或者显示];
    }
      

  3.   

    传递参数的时候多个指向按钮的参数,showpop(button); 
    按钮调用时,onclick="showpop(this)"
      

  4.   

    给按钮添加自定义属性,例如<button myid="div1">,
    var evt = e || window.event;
    var evtTarget = evt.target || evt.srcElement;
    var panel_id =evtTarget.getAttribute("myid")
    var Panel = document.getElementByid(panel_id);
    Panel.style.display="block";
    将需要显示的层的ID,作为按钮的一个属性,就很容易了。
      

  5.   

    5楼正解。
    只需要button与div有个对应关系就OK。
    例如:<div id="1"><div>
    <input type=button onclick="showpop('1')">
      

  6.   

    var evt = e || window.event; 
    var evtTarget = evt.target || evt.srcElement; 
    var panel_id =evtTarget.getAttribute("myid") 
    var Panel = document.getElementByid(panel_id); 
    Panel.style.display="block"; 
    报了e没有定义。
    showpop(e)?传参和不传参的方法是不一样的。
    采用传参
    如果<input type=button onclick="showpop('div1')">
    <script>
    function showpop(e)
    {
    var tmp=document.getElementById(e);
    e.style.display="block";
    }
    </script>采用属性的方法
    <input type=button mydiv="div1" onclick="showpop()">
    <script>
    function showpop()
    {
    var btn=window.event.srcElement;
    var tmp=document.getElementByName(btn.getAttribute("mydiv"));
    tmp.style.display="block";
    }
    </script>