【原创】根据索引带出数据且按回车动态增加行

作者:caoxicao
出处:http://blog.csdn.net/caoxicao

代码分析:
function CheckSerialNum(whatid,what,retailer,curr,whse)
{ if (form1.salesman.value=="")
    {
        alert("先选择门店");
        return;
    }
if (event.keyCode==13)
  {
    var oXmlHttp = new ActiveXObject("Microsoft.XMLHTTP");

    oXmlHttp.Open("POST", "qrySN.asp?serialNum="+what+"&retailer="+retailer+"&Curr="+curr+"&whse="+whse, false);

    oXmlHttp.Send();
      if (unescape(oXmlHttp.responseText) == "Wrong")
        {
               alert('没有找到!');
            eval("window.form1.SerialNum"+whatid+".select()");
               eval("window.form1.SerialNum"+whatid+".focus()");
        }
       else
        {   
            var StrSerial
            StrSerial = unescape(oXmlHttp.responseText);
            var SerialNum
            //alert(StrSerial);
            SerialNum = StrSerial.split("*_*");
            eval("window.form1.SerialNum"+whatid+".value = /""+String(SerialNum[0])+"/";");
            eval("window.form1.ProductCode"+whatid+".value = /""+SerialNum[1]+"/";");
            eval("window.form1.WhseLocation"+whatid+".value = /""+SerialNum[2]+"/";");
            eval("window.form1.Price"+whatid+".value = /""+SerialNum[3]+"/";");
            eval("window.form1.MaxPrice"+whatid+".value = /""+SerialNum[4]+"/";");
            eval("window.form1.MinPrice"+whatid+".value = /""+SerialNum[5]+"/";");
            eval("window.form1.ProductName"+whatid+".value = /""+SerialNum[6]+"/";");
            eval("window.form1.LotTracked"+whatid+".value = /""+SerialNum[7]+"/";");
            eval("window.form1.Lotlen"+whatid+".value = /""+SerialNum[8]+"/";");
            eval("window.form1.SerialTracked"+whatid+".value = /""+SerialNum[9]+"/";");
            eval("window.form1.Seriallen"+whatid+".value = /""+SerialNum[10]+"/";");
            eval("window.form1.Vendorid"+whatid+".value = /""+SerialNum[11]+"/";");
            eval("window.form1.StockType"+whatid+".value = /""+SerialNum[12]+"/";");
            
            //动态增加行            
//begin

            

            id = whatid+1
            var obj=eval("goodtr"+whatid);

            var objDiv=eval("tdtr1");
            
            var re0;
            re0=/(SerialNum|ProductCode|ProductName|Qty|Price|WhseLocation|Cash|CustomerPay|Commitment|LotTracked|SerialTracked|Lotlen|Seriallen|MaxPrice|MinPrice|Vendorid|StockType|DescriptR)(/()?(')?[1-9][0-9]?(')?(/))?/g;
    
            var re1;
            re1=/>[1-9][0-9]?</;
            var ModifiedHTML;
            ModifiedHTML=obj.innerHTML;
            ModifiedHTML=ModifiedHTML.replace(re0,"$1"+"$2"+"$3"+String(id)+"$4"+"$5");

            ModifiedHTML=ModifiedHTML.replace(re1,"><");
            var addHTML;
            
            addHTML ="<table width=/"100%/"><tr id=goodtr"+String(id)+">";
            addHTML = addHTML + ModifiedHTML;
            addHTML = addHTML + "</tr></table>"
            
            objDiv.insertAdjacentHTML("beforeEnd", addHTML);


            eval("form1.SerialNum"+id+".value=''");
            eval("form1.ProductCode"+id+".value=''");
            eval("form1.ProductName"+id+".value=''");
            eval("form1.Qty"+id+".value='1'");
            eval("form1.Price"+id+".value=''");
            eval("form1.WhseLocation"+id+".value=''");
            eval("form1.Cash"+id+".value=''");
            eval("form1.CustomerPay"+id+".value=''");
            eval("form1.Commitment"+id+".value=''");
            eval("form1.LotTracked"+id+".value=''");
            eval("form1.SerialTracked"+id+".value=''");
            eval("form1.Lotlen"+id+".value=''");
            eval("form1.Seriallen"+id+".value=''");
            eval("form1.MaxPrice"+id+".value=''");
            eval("form1.MinPrice"+id+".value=''");
            eval("form1.Vendorid"+id+".value=''");
            eval("form1.StockType"+id+".value=''");
            eval("window.form1.SerialNum"+id+".focus()");
            window.form1.Maxline.value = whatid;
                                               // 本来Maxline的值对本程序意义不大,但是由于已经有很多程序在用
                                               // 并且,这个值在以前是固定的,现在成了变量。^_^
//end
        }
    }
}  

这里主要分析动态增加行的技术。
在比较了很多种动态增加行或列的技术之后感觉,目前用的方法最简洁。
innerHTML只能增加表格或者<DIV></DIV>里的内容,不能动态直接增加<tr></tr>(当时,这个地方差点把我逼疯了!)

所以在即将增加的行里,可以这样设置:
<tr>
   <td colspan=10 id=tdtr<%=i%>>
     <table width="100%" >
          <tr id=goodtr<%=i%> >  
              <td></td>
          </tr>
      </table>
    </td>
</tr>
另:insertAdjacentHTML和innerHTML  第一个插入,第二个是赋值

原型:insertAdjacentHTML(swhere,stext) 
参数: 
swhere:指定插入html标签语句的地方,有四种值可以用: 
1.beforeBegin:插入到标签开始前 
2.afterBegin:插入到标签开始标记后 
3.beforeEnd:插入到标签结束标记前 
4.afterEnd:插入到标签结束标记后   

=====================

var obj=eval("goodtr"+whatid);  //首先定义一个即将插入的对象  

var objDiv=eval("tdtr1");  //定义一个标签位置

var ModifiedHTML;
ModifiedHTML=obj.innerHTML; //将obj插入

ModifiedHTML=ModifiedHTML.replace(re0,"$1"+"$2"+"$3"+String(id)+"$4"+"$5"); 

ModifiedHTML=ModifiedHTML.replace(re1,"><"); //以上两行是格式化插入内容
var addHTML;
            
addHTML ="<table width=/"100%/"><tr id=goodtr"+String(id)+">"; 
addHTML = addHTML + ModifiedHTML;
addHTML = addHTML + "</tr></table>" //以上三行是待插入的HTML内容
            
objDiv.insertAdjacentHTML("beforeEnd", addHTML); //在objDiv标签处插入addHTML内容

================================
另:分析reo,re1,两个正则表达式。
var re0;
re0=/(SerialNum|ProductCode|ProductName|Qty|Price|WhseLocation|Cash|CustomerPay|Commitment|LotTracked|SerialTracked|Lotlen|Seriallen|MaxPrice|MinPrice|Vendorid|StockType|DescriptR)(/()?(')?[1-9][0-9]?(')?(/))?/g;

//    结尾的可选的g参数,这表示在每行中对所有匹配的串执行搜索(而不是缺省的只搜索第一个匹配串)。
//    结尾还可以添加 i 参数,表示忽略大小写
//    [1-9][0-9]?表示匹配两位数    
//    [1-9][0-9]表示匹配任何位数
//    /<.*>/ 和 /<(.*)>/是一样的,经常用(.)来表示句点。
//    其意义:匹配从开始的小于号 (<) 到 标记结束处的大于号之 间的所有内容。
//    如果 /<.*?>/ ,最小匹配,表示:只取出一个<h1>标记 
//    通过在 '*'、 '+' 或 '?' 限定符后放置 '?',该表达式就从贪婪匹配转为了非贪婪或最小匹配
//    上面re0表示:SerialNum|ProductCode...并且后面有('num')或者(num)的全部字符串,如:SerialNum5
//    
//    
//    
//    


var re1;
re1=/>[1-9][0-9]?</;

ModifiedHTML=ModifiedHTML.replace(re0,"$1"+"$2"+"$3"+String(id)+"$4"+"$5");

ModifiedHTML=ModifiedHTML.replace(re1,"><");


                                                --------       GAME OVER       --------      

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值