关于js 正则匹配test 反复调用的有关问题.
关于js 正则匹配test 反复调用的问题..
大神们!!!这个我设计了一个input A 点击时 弹出一个div 上面有 input B 和button C还有显示查询结果的table T ,将模糊查询内容写入B中点击C 调用这个函数....第一次可以执行 显示正常...但是再次修改B中的内容,点击C...就alert(没有查询到结果)。。。。。。
搜索网上说是test()的游标lastIndex 置0 我置了 也没用啊 ....
求大神解惑..
或者有没有别的模糊匹配的方法替代?
------解决方案--------------------
没注意看你代码,append另外一个对象的子对象会从源对象中删除这个dom对象,需要clone一下才行
//搜索结果..付给接收的table
for(var i=0;i<result.length;i++)
{
ntableObj.firstChild.firstChild.appendChild(result[i].cloneNode(true));
}
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 我置了 也没用啊 ....
求大神解惑..
或者有没有别的模糊匹配的方法替代?
------解决方案--------------------
没注意看你代码,append另外一个对象的子对象会从源对象中删除这个dom对象,需要clone一下才行
//搜索结果..付给接收的table
for(var i=0;i<result.length;i++)
{
ntableObj.firstChild.firstChild.appendChild(result[i].cloneNode(true));
}