日期:2014-05-16  浏览次数:20453 次

关于js 正则匹配test 反复调用的问题..

function getSearch(tableName,txt){

var txt = txt;
//var tableName =tableName;
if(txt == null || txt == "")
{
alert("请输入关键字");
return false;

}
//正则公式...
var re = eval("/"+txt+"/g");
//var re =  new RegExp(txt);

//定义接收数组...
var result = new Array();
//数据存放的table
var tableObj = document.getElementById(tableName);
//显示出匹配内容的table
var ntableObj = document.getElementById('sch_table');
//先清空sch_table
var rcount = ntableObj.rows.length;
for(var i = rcount-1 ;i>0 ;i--)
{
ntableObj.deleteRow(i);
}

//第一行对象
var trObj = tableObj.firstChild.firstChild;
var ntrObj = ntableObj.firstChild.firstChild;

for(trObj; trObj!=null; trObj= trObj.nextSibling)
{

var tdtxt=trObj.cells[1].innerHTML;

//alert(tdtxt);
//test 只能成功一次. ?????????????????????
re.lastIndex = 0; 
if(re.test(tdtxt)==true)
{
result[result.length] = trObj;

}

}

if(result.length==0){
alert("没有查询到结果");
return false
}

//搜索结果..付给接收的table
for(var i=0;i<result.length;i++)
{
ntableObj.firstChild.firstChild.appendChild(result[i]);

}
//赋予双击函数..
for(var i=0;i<result.length;i++)

ntableObj.firstChild.firstChild.name = 'sch_id_'+i;
}
ntableObj.firstChild.firstChild.ondblclick=function(){acq_infor(tableName);}
}







大神们!!!这个我设计了一个input A 点击时 弹出一个div 上面有 input B 和button C还有显示查询结果的table T ,将模糊查询内容写入B中点击C 调用这个函数....第一次可以执行 显示正常...但是再次修改B中的内容,点击C...就alert(没有查询到结果)。。。。。。
搜索网上说是test()的游标lastIndex 置0   我置了  也没用啊 ....
求大神解惑..
或者有没有别的模糊匹配的方法替代?

------解决方案--------------------
引用:
JavaScript code?123456//搜索结果..付给接收的table    for(var i=0;i<result.length;i++)    {        ntableObj.firstChild.firstChild.appendChild(result[i]);                  }
所以问题在这里了  我将result[i] ……

没注意看你代码,append另外一个对象的子对象会从源对象中删除这个dom对象,需要clone一下才行

    //搜索结果..付给接收的table
    for(var i=0;i<result.length;i++)
    {
        ntableObj.firstChild.firstChild.appendChild(result[i].cloneNode(true));
             
    }