按钮是动态生成的
 所以id是一样的 我怎样实现当点开展开的事 显示大礼包下面的礼品呢 在线等  谢谢

解决方案 »

  1.   

    很遗憾的说  图片看不见,你动态生成按钮的话 就能动态给这个按钮加上js事件,有了js事件 还有啥页面上操作不了的?
      

  2.   

    图看不到,真不知道该怎么帮你解决
    如果id是一样的,那你至少需要添加一个别的属性来绑定相应的礼包的的编号之类的,
    function create(pid){
    var btnObj = document.createElement(input);
    btnObj.id="id";
    btnObj.name="present"
    btnObj.type="button";
    btnObj.value="礼包";
    btnObj.pid=pid;
    btnObj.onclick=show;
    document.getElementById("contentDiv").appendChild(btnObj);
    }
    function show(){
    var btnObj=event.srcElement;
    var divObj=document.getElementById("pDIV"+btnObj.pid);
    divObj.style.display="block";
    }
    上面是针对你的问题写了一大概,不知道行不行
    如果你是用JQuery 框架,那就容易了
    页面上 例如 :自定义一个属性用于存放礼包编号 
    <input type="button" id="id" name="present" pid="1" valueu="礼包" />
    当然 pid 是动态赋的值,调用方法可以实现取pid 显示相应的礼包如果说是 事先写好的事件,想给动态创建的按钮绑定事件可以用JQuery的 live 方法
    $("input[id='id']").live("click",function(){
    var pid=$(this).attr("pid");
    $("pDIV"+pid).show();
    });
    这样也可以使用委托给动态创建的HTML元素绑定事件
      

  3.   


    我的意思是 动态生成了两个btn 和两个 div 像这样的情况怎么处理
    <input type="button" id="show" value="展开" />
    <div id="divShow"></div>
    <input type="button" id="show" value="展开" />
    <div id="divShow"></div>开始我也想过动态加一个不一样的标识
     但是呢 用的jstl标签 和 struts 标签  不知道怎么用 
      

  4.   

    如果是你写的那样的结构也有办法的,例如你给它们一个索引,这个属性是自定义的,你也可以改成别的,我现在就以index为例
    <input type="button" id="show" index="1" value="展开" onclick="show(this)" />
    <div id="divShow1"></div>
    <input type="button" id="show" index="2" value="展开" onclick="show(this)" />
    <div id="divShow2"></div>定义的JS像这样
    function show(btnObj){
        var index = btnObj.index;  // 只要定义了,这里就可以得到
        var divShow = document.getElementById("divShow"+index);
        divShow.style.display = "block";
    }
    如果是JQuery 框架那就更简单了
    $("input[id='show']").click(function(){
        $(this).next().show();    // 只一句话就OK了,取到当前鉵发事件的按钮,点它的下个元素,再show() 一下就可以了
    });
    这下应该可以了
    该结帖给我分了吧?