JS代码如下:
<script language="javascript" type="text/javascript">
        function white()
        {
            var gvList = document.getElementById("gvList");
            var count=0;
            for(var i = 1; i < gvList.rows.length; i++)
            {  
                  //var cb = gvList.rows[i].getElementById("chk_select");
                  //下面取当前行的checkbox有问题...
                  var cb = gvList.rows[i].getElementsByTagName("input");
                  if (cb.checked == true)
                  {
                    var user_id = gvList.rows[i].cells[1].innerText;
                    var user_email = gvList.rows[i].cells[3].innerText;
                    alert(user_id);
                    //分别把这两个值赋值到父窗口的LISTBOX中
                    o = window.opener;
                    var ListObj = o.document.getElementById("List_mail");
                    addOption(ListObj,user_id,user_email);
                    count++;
                  }
             }
            alert(count);
            window.close();
        }
        
        function addOption(ListObj,text,value)
        {
            var List = ListObj;
            var newOption = new Option();
            newOption.text = text;
            newOption.value = value;
            List.add(newOption);
        }
    </script>==============
想要实现的功能:
子窗口gridview中,每行第一列有个checkbox,可选中多行,然后点击按钮后,把选中的值传到父窗口的listbox控件中....
<input id="Button1" type="button" value="OK" onclick="javascript:white();" />现在问题好像是JS取不到gridview中选中行的值,见上面代码,请各位高人指点一下,,谢谢!

解决方案 »

  1.   

    var cb = gvList.rows[i].getElementsByTagName("input");
    这句话有问题
    到页面了肯定不是这个id了
      

  2.   

    if (cb.checked == true)
    ==> if (cb[0].checked )
      

  3.   

    getElementsByTagName
    得到的是一个数组.
      

  4.   

    var cb = gvList.rows[i].getElementsByTagName("input")[0];
      

  5.   

    var cb = gvList.rows[i].getElementsByTagName("input");
    if (cb.checked == true)
    改成
    var cb = gvList.rows[i].getElementsByTagName("input")[0];
    if (cb.type == "checkbox" && cb.checked == true)
      

  6.   

    按照cpp2017(慕白兄) 的做法,可以取到值了,,,但是,这段代码又过不去了://分别把这两个值赋值到父窗口的LISTBOX中
    o = window.opener;
    var ListObj = o.document.getElementById("List_mail");
    addOption(ListObj,user_id,user_email);请再指教!
      

  7.   

    多谢各位,现在如何把得到的值传到父窗口的listbox控件中呢??
      

  8.   

    try:List.add(newOption);
    ==>
    List.appendChild(newOption)
      

  9.   

    cpp2017(慕白兄)这样写还是不行,报错 "document 为空或不是对象..."
      

  10.   

    父窗口是通过window.open打开当前窗口的吗?
      

  11.   

    是的 ,
    <input id="Button1" type="button" value="button" onclick="OpenWin('POP_1.aspx','test',500,550)" />运行到count++;之前,也没有好像也没报错了,就是没有反应...窗口也没关闭...
      

  12.   

    OpenWin
    是用window.open打开的吗?
      

  13.   

    是的function OpenWin(url,title,width,height)
    {
        var w = 1024;
        var h = 768;    if (document.all || document.layers)
        {
            w = screen.availWidth;
            h = screen.availHeight;
        }    var leftPos = (w/2-width/2);
        var topPos = (h/2.3-height/2.3);    window.open(url,title,"width="+width+",height="+height+",top="+topPos+",left="+leftPos+",scrollbars=yes,resizable=yes,status=yes")
    }
      

  14.   

    o = window.opener;
    var ListObj = o.document.getElementById("List_mail");
    addOption(ListObj,user_id,user_email);
    count++;
    =========================================
    改成试试:
    var o = window.opener;
    if(o && o.document && o.document.getElementById)
    {
    var ListObj = o.document.getElementById("List_mail");
    if(ListObj)
    {
    addOption(ListObj,user_id,user_email);
    }
    count++;
    }
    function addOption(ListObj,text,value)
    {
    var List = ListObj;
    var newOption = new Option();
    newOption.text = text;
    newOption.value = value;
    if(List.appendChild)
     List.appendChild(newOption);
    }
      

  15.   

    郁闷啊,按照babyrockxray(紫色阴影)的方法还是不行.....
    离成功只有一步之遥,请继续出招,,,,多谢!
      

  16.   

    我发现传值给父窗口的textbox,是没有问题的,
    var textbox = o.document.getElementById("TextBox1");
    textbox.value = user_id;
    ----------------------------------------------------
    现在问题可能是JS给LISTBOX添加新项的脚本出错.
      

  17.   

    检查一下父窗口的html源码中是否有 id=List_mail这个的element
      

  18.   

    有啊,而且我又用了一个HTML的控件来测试,也不行....
    <select id="List_mail" name="List_mail" multiple="multiple" style="width: 200px; height: 60px"></select>