你打出name1.length这个看看是多少?

解决方案 »

  1.   

    就是这个通不过啊?
    前面的代码在
    如何添加动态table中的数据到数据库01?
      http://topic.csdn.net/u/20080616/13/9256f13b-8151-4160-a72f-edb4137ce4cc.html
      

  2.   

    hid
    是个字符串,你在组合的时候可以用,连接,然后用split(",")来分割成数组
      

  3.   

    你System.out.println(name1.length);看看取没取到
    最近工作有点忙 白天上不了csdn...
      

  4.   

    可以了,可以添加数据到数据库了
    但无论我用
    String  name1[]=(String[])request.getParameterValues("hid"); 
    循环取值
    还是用
    String   name1   =   new   String(request.getParameter("hid").getBytes("ISO-8859-1")).trim(); 
    取字符
    表里添加的数据都在一个单元格里面了
    id1                 id2 
    小王外省人  ,小王      NULL好像没有按循环去一个一个添加?
    怎么回事啊?
      

  5.   

    System.out.println(name1.length);
    这个显示的值是“ 1 ”;
    长度始终是“1”;
    估计接受的数据不是数组
    而变成一个字符串了
    该怎么办啊?
      

  6.   

    document.getElementById('hid').value = arrDb;//request.getParameter('hid')即可,此时的hid为arrDb中的项,默认用,分隔开,所以在java中还需要split下String  name1[]=request.getParameterValues("hid").split(",");//这里需要split下,默认的分隔符号为",",除非在js中指定了其他的分隔符号
      

  7.   

    可以了
    但split下 
    添加到数据库里面的数据变成了乱码?
    怎么回事??
      

  8.   

    编码不一致,把编码改一致来试下下面的,使用escape/encodeURI编码下 function sub(){ 
        var oTbl = $('otbl'); 
        //alert(oTbl.rows.length) 
        if(num < oTbl.rows.length){ 
            oTbl.rows(num).cells(0).innerText = $('oname').value; 
            oTbl.rows(num).cells(1).innerText = $('oage').value; 
            
        }else{ 
        alert(num) 
            var oRow = oTbl.insertRow(num); 
            var oCell = oRow.insertCell(0); 
            var oCell1 = oRow.insertCell(1); 
            oCell.innerText += $('oname').value; 
        oCell1.innerText += $('oage').value; 
            
        } 
        num++;     } 
    var arrDb = new Array();
        function Dbclick(){
            var oTbl = $('otbl'); 
            for(var i=0;i<oTbl.rows.length;i++){
                for(var j=0;j<oTbl.rows(i).cells.length;j++){
                    arrDb.push(encodeURI(oTbl.rows(i).cells(j).innerText));//==============编码一下
                }        
            }
            document.getElementById('hid').value = arrDb;//request.getParameter('hid')即可
            alert(arrDb.length);
            alert(arrDb.toString())//
            
        }
      

  9.   

    谢谢,<BODY> 
    <INPUT TYPE="text" id='oname' value='小王'> 
    <INPUT TYPE="text" id='oage' value = '22'> 
    <INPUT TYPE="hidden" id="hid">//这是一个隐藏字段
    <INPUT TYPE="button" value='提交' onclick="sub()"> 
    <INPUT TYPE="button" value="更新到数据库" onclick='Dbclick()'>
      <TABLE border='1'id='otbl'> 
      <TR> 
        <TD>&nbsp; </TD> 
        <TD>&nbsp; </TD> 
      </TR> 
      <TR> 
        <TD>&nbsp; </TD> 
        <TD>&nbsp; </TD> 
      </TR> 
      <TR> 
        <TD>&nbsp; </TD> 
        <TD>&nbsp; </TD> 
      </TR> 
      <TR> 
        <TD>&nbsp; </TD> 
        <TD>&nbsp; </TD> 
      </TR> 
      </TABLE> 
    </BODY> 
    </HTML> 
    现在只插入一条数据,初始化table表中多余的没有数据的行 也会成空白添加到数据库, 如:
      id1  id1
    1 小王  22
    2 小王  22
    3
    4
    3和4行就变成空白,再一次添加数据 ,就从第5行开始添加,
    不知道怎样才能不添加空白行,
    再一次添加数据 直接从第3行开始添加???
      

  10.   

    把空的行不发送到服务器就好了
    //给string类型添加一个原型trim
    String.prototype.trim=function(reg){if(reg)return this.replace(reg,"");else return this.replace(/^\s*|\s*$/g,"");}
    function sub(){ 
        var oTbl = $('otbl'); 
        //alert(oTbl.rows.length) 
        if(num < oTbl.rows.length){ 
            oTbl.rows(num).cells(0).innerText = $('oname').value; 
            oTbl.rows(num).cells(1).innerText = $('oage').value; 
            
        }else{ 
        alert(num) 
            var oRow = oTbl.insertRow(num); 
            var oCell = oRow.insertCell(0); 
            var oCell1 = oRow.insertCell(1); 
            oCell.innerText += $('oname').value; 
        oCell1.innerText += $('oage').value; 
            
        } 
        num++;     } //这个是正则,提供给string.trim用的,需要去掉的字符
    var reg=/^(&nbsp;| )*|(&nbsp;| )*$/gi//去掉首尾的空格==========
    var arrDb = new Array();
        function Dbclick(){
            var oTbl = $('otbl'); 
            for(var i=0;i<oTbl.rows.length;i++){
                for(var j=0;j<oTbl.rows(i).cells.length;j++){
                 if(oTbl.rows(i).cells(j).innerText.trim().trim(reg)!="")//不为空
                    arrDb.push(encodeURI(oTbl.rows(i).cells(j).innerText));//==============编码一下
                }        
            }
            document.getElementById('hid').value = arrDb;//request.getParameter('hid')即可
            alert(arrDb.length);
            alert(arrDb.toString())//
            
        }
      

  11.   

    你可以修改我给你的正则啊,我是把&bnsp;这种空白符号一起替换了,如果你要存储&nbsp;的话,把正则修改下//你需要修改的是这个正则,要替换
    //var reg=/^(&nbsp;| )*|(&nbsp;| )*$/gi//去掉首尾的空格==========&nbsp;这种空格也替换了
    //==>
    var reg=/^ *| *$/gi//去掉首尾的空格==========
      

  12.   

    又有个问题
    表里没有输入数据的时候 
    单击“更新到数据库”时,数据库也会自动增加一行 空白行 ?单击“reset” 时 数据库同样也会增加一行空白行 ?
    ?? 怎么回事啊