首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

'rows' 为空或不是对象解决办法

2012-03-03 
rows 为空或不是对象我做一个进销存管理系统的JS脚本,这段脚本的意思是在我获取到明细单表的之后,就在获

'rows' 为空或不是对象
我做一个进销存管理系统的JS脚本,这段脚本的意思是在我获取到明细单表的之后,就在获取的table中进行修改。将table中的一表格转换成了textBox,这一点已经成功,可是当我要修改的时候却始终出现'rows' 为空或不是对象的提示。
可是我明明已经获取到了table啊!
获取table的值用的是这一段脚本:
function init(){
  var tabProduct=document .getElementById ("tabProduct");
  EditTables (tabProduct);
  }
出问题的脚本代码如下:
//提取表格的值,JSON格式
  function GetTableData(table){
  var tableData=new Array();
  alert("行数:"+table.rows.length); //出问题的就在这一行,每当我修改的时候就会出现'rows' 为空或不是对象的问题,然后就阻止我修改

  for(var i=1;i<table.rows.length;i++){
  tableData.push(GetRowData(tabProduct.rows[i]));
  }
  return tableData;
  } 

我将所有的脚本语言贴下:

JScript code
function selectBuyOrder(){ 
      var ual="BuyOrder_Frame.aspx";
      var result=window.showModalDialog(ual,'DialogWidth=590px,DialogHeight=500px');
      if(result!=null){
      var val =result.split(',');
        document .getElementById ("BuyOrderID").value=val[0];
        document .getElementById ("TotalPrice").value=val[1];
      }
//      debugger;
      initload();
      init();
    }
   
    function initload()
      {
        var BuyOrderID="";
        BuyOrderID=document.getElementById("BuyOrderID").value;
        var xmlHttp=createXmlHttp();
        xmlHttp.onreadystatechange=function(){
            if (xmlHttp.readyState==4){
              document.getElementById("initSubmitInfo").innerHTML = xmlHttp.responseText;
            }
        }
//        xmlHttp.open("POST","AjaxBuyReceipt.aspx",true);
//        xmlHttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
//        xmlHttp.send("action=loadDetail&BuyOrderID="+BuyOrderID);
          xmlHttp.open("GET","AjaxBuyReceipt.aspx?BuyOrderID="+BuyOrderID,false);
        xmlHttp.send();
      }
     
      function createXmlHttp()
      {
        var xmlHttp=null;
        if(window.xmlHttpRequest){
            xmlHttp = new XMLHttpRequest();           
        }else{
          xmlHttp= new ActiveXObject("Microsoft.XMLHTTP");
        }
        return xmlHttp;       
      }
     
      function init(){
        var tabProduct=document .getElementById ("tabProduct");
        EditTables (tabProduct);
      }
     
     
      function EditTables(){
      for(var i=0;i <arguments.length;i++){
          SetTableCanEdit(arguments[i]);
        }
      }
     


     
      //设置表格是可编辑的
      function SetTableCanEdit(table){
     
        for (var i=0;i <table.rows.length;i++){
            SetRowCanEdit (table.rows[i]);
        }
      }
      function SetRowCanEdit(row){
        for (var j=0;j <row.cells.length;j++){
          //如果当前单元格指定了编辑类型,则表示允许编辑
          var editType=row.cells[j].getAttribute("EditType");
          if (!editType){
          //如果当前单元格没有指定,则查看当前列是否指定
              editType =row.parentNode.rows[0].cells[j].getAttribute("EditType");
          }
          if(editType){
            row.cells[j].onclick=function(){
                EditCell(this);
            }
          }
        }
      }
      //设置指定单元格可编辑
      function EditCell(element,editType){
        var editType=element.getAttribute("EditType");
        if(!editType){
        //如果当前单元格没有指定,则查看当前列是否指定
        editType=element.parentNode.parentNode.rows[0].cells[element.cellIndex].getAttribute("EditType");
        }
       
        switch(editType){
          case"TextBox":
          CreateTextBox(element,element.innerHTML);
          break;
          default:
          break;
        }
      }
     
      //为单元格创建可编辑输入框
      function CreateTextBox(element,value){
      //检查编辑状态,如果已经是编辑状态,跳过
      var editState=element.getAttribute("EditState");
      if(editState!="true"){
          //创建文本框
          var textBox=document .createElement("INPUT");
          textBox.type="text";
          textBox.className="EditCell_TextBox";
         
          //设置文本框当前值
          if(!value){
            value =element.getAttribute("Value");
          }
          textBox.value=value;
         
          //设置文本框的失去焦点事件
          textBox.onblur=function(){
              CancelEditCell(this.parentNode,this.value);
          }
          //向当前单元格添加文本框
          ClearChild(element);
          element.appendChild(textBox);
          textBox.focus();
          textBox.select();
          //改变状态变量
          element.setAttribute("EditState","true");


          element.parentNode.parentNode.setAttribute()
      }
      }
     
      //清空指定对象的所有子节点
      function ClearChild(element){
        element.innerHTML="";
      }
     
      //添加行
      function AddRow(table){
      var lastRow=table.rows[table.rows.length-1];
      var newRow=lastRow.cloneNode(true);
      table.tBodies[0].appendChild(newRow);
      SetRowCanEdit(newRow);
      return newRow;
      }
     
      //删除行
      function DeleteRow(table,index){
        for (var i=table.rows.length-1;i>0;i--){
            var chkOrder=table.rows[i].cells[0].firstChild;
            if (chkOrder){
                if (chkOrder.type="CHECKBOX"){
                  if (chkOrder.checked){
                    //执行删除
                    table.deleteRow(i);
                  }
                }
            }
        }
      }
     
      //取消单元格编辑状态
      function CancelEditCell(element,value,text){
        element.setAttribute("Value",value);
        if(text){
            element.innerHTML=text;
        }else{
            element.innerHTML=value;
        }
        element.setAttribute("EditState","false");
       
       
      }
   
    //提取表格的值,JSON格式
    function GetTableData(table){
      var tableData=new Array();
          alert("行数:"+table.rows.length);
          for(var i=1;i <table.rows.length;i++){
            tableData.push(GetRowData(tabProduct.rows[i]));
          }
          return tableData;
    }
   
      //提取指定行的数据,JSON格式
      function GetRowData(row){
        for(var j=0;j <row.cells.length;j++){
            name=row.parentNode.rows[0].cells[j].getAttribute("Name");
            if(name){
              var value=row.cells[j].getAttribute("Value");
              if(!value){
                  value=row.cells[j].innerHTML;
              }
              rowData[name]=value;
            }
        }
        //alert("ProductName:"+rowData.ProductName);
        //或者这样:alert("ProductName:"+rowData["ProductName"]);


        return rowData;
      }
      //检查当前数据行中需要运行的字段
      function CheckExpression(row){
        for(var j=0;j <row.cells.length;j++){
            expn=row.parentNode.rows[0].cells[j].getAttribute("Expression");
            //如指定了公式则要求计算
            if (expn){
              var result=Expression(row,expn);
              var format=row.parentNode.rows[0].cells[j].getAttribute("Format");
              if (format){
                  //如指定了格式,进行字值格式化
                  row.cells[j].innerHTML=formatNmber(Expression(row,expn),format);
              }
              else{
                  row.cells[j].innerHTML=Expression(row,expn);
              }
            }
        }
      }
      function formatNmber(num,pattern){
        var strarr=num?num.toString().split('.'):['0'];
        var fmtarr=pattern?pattern.split('.'):[''];
        var retstr='';
       
        //整数部分
      var str=strarr[0];
      var fmt=fmtarr[0];
      var i=str.length-1;
      var comma=false;
      for(var f=fmt.length-1;f>=0;f--){
          switch(fmt.substr(f,1)){
              case'#':
                if(i>=0) retstr=str.substr(i--,1)+retstr;
                break;
              case'0':
                if(i>=0) retstr=str.substr(i--,1)+retstr;
                else retstr='0'+retstr;
                break;
              case',':
                comma =true;
                retstr=','+retstr;
                break;
          }
      }
      if (i>=0){
        if(comma){
            var l=str.length;
            for(;i>=0;i--){
              retstr=str.substr(i,1)+retstr;
              if(i>0 && ((l-i)%3)==0)  retstr=','+retstr;
            }
        }
        else{
            retstr=str.substr(0,i+1)+retstr;
        }
      }
      retstr=retstr+'.';
      //处理小数部分
      str=strarr.length>1?strarr[1]:'';
      fmt=fmtarr.length>1?fmt[1]:'';


      i=0;
      for(var f=0;f <fmt.length;f++){
        switch(fmt.substr(f,1)){
            case'#':
              if(i <str.length)  retstr+=str.substr(i++,1);
              break;
            case '0':
              if(i <str.length) retstr+=str.substr(i++,1);
              else retstr+='0';
              break;
        }
      }
      return retstr.replace(/^,+/,'').replace(/\.$/,'');
      }
     
     
      function Expression(row,expn){
        var rowData=GetRowData(row);
        for(var j=0;j <row.cells.length;j++){
          name=row.parentNode.rows[0].cells[j].getAttribute("Name");
          if(name){
            var reg=new RegExp(name,"i");
            expn=expn.replace(reg,rowData[name].replace(/\,/g,""));
          }
        }
        return eval(expn);
      }
   



[解决办法]
一大堆的!谁爱看啊!!

热点排行