귀속 데이터 섬의 표에 있는 텍스트를 조회하고 표시 방식의 js 코드를 수정합니다

5203 단어
 
  
<br>function findAll(s){ <br>if(s.length==0){ <br>alert(" "); <br>} <br> <br>s=encode(s); <br>var TDs=document.all.DataT1.all.tags("TD"); <br>var num=0; <br>for(var i=0;i<TDs.length;i++){ <br>var tdObj=TDs[i]; <br>var obj=tdObj.childNodes[0]; <br>if(!obj.className || obj.className!="highlight"){ <br>var t=obj.innerHTML.replace(/<span\s+class=.?highlight.?>([^<>]*)<\/span>/gi,"$1"); <br>obj.innerHTML=t; <br>var cnt=loopSearch(s,obj); <br>t=obj.innerHTML; <br>var r=/{searchHL}(({(?!\/searchHL})|[^{])*){\/searchHL}/g; <br>t=t.replace(r,"<span class='highlight'>$1</span>"); <br>obj.innerHTML=t; <br>num=num+cnt; <br>} <br>} <br>alert(" "+num+" "); <br> <br>} <br>function encode(s){ <br>return s.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/([\\\.\*\[\]\(\)\$\^])/g,"\\$1"); <br>} <br>function decode(s){ <br>return s.replace(/\\([\\\.\*\[\]\(\)\$\^])/g,"$1").replace(/>/g,">").replace(/</g,"<").replace(/&/g,"&"); <br>} <br> <br>function loopSearch(s,obj){ <br>var cnt=0; <br>if(obj.nodeType==3){ <br>cnt=replace(s,obj); <br>return cnt; <br>} <br>for(var i=0,c;c=obj.childNodes[i];i++){ <br>if(!c.className || c.className!="highlight") <br>cnt+=loopSearch(s,c); <br> <br>} <br>return cnt; <br>} <br> <br>function replace(s,dest){ <br>var r=new RegExp(s,"gi"); <br>var tm=null; <br>var t=dest.nodeValue; <br>var cnt=0; <br>var arr=new Array(); <br>var a=""; <br>var b=""; <br>if(tm=t.match(r)){ <br>cnt=tm.length; <br>a=tm.toString(); <br>arr=a.split(","); <br>for(var i=0;i<arr.length;i++) <br>b="{searchHL}"+arr[i]+"{/searchHL}"; <br>t=t.replace(r,b); <br>dest.nodeValue=t; <br>} <br>return cnt; <br>} <br> <br>


상기 방법에서 주의해야 할 것은 두 가지가 있다. 첫째,findAll에서obj를 최소 단위로 가져간다. 그렇지 않으면 교체가 혼란스러워진다. 나는 실천에서 이 점은 주로 데이터 섬의 연결과 관련이 있다는 것을 깨달았다. 일반적인 텍스트는 이렇게 조심할 필요가 없다. 둘째, Replace 방법은 tm를 수조로 나누는 것도 표와 관련이 있고 일반적인 텍스트는 분리할 필요가 없다.
일반적인 텍스트라면 다음과 같이 쓸 수 있다
 
  
<br>function findAll(s){ <br>if (s.length==0){ <br>alert(' !'); <br>return false; <br>} <br>s=encode(s); <br>var obj=document.getElementsByTagName("body")[0]; <br>var t=obj.innerHTML.replace(/<span\s+class=.?highlight.?>([^<>]*)<\/span>/gi,"$1"); <br>obj.innerHTML=t; <br>var cnt=loopSearch(s,obj); <br>t=obj.innerHTML <br>var r=/{searchHL}(({(?!\/searchHL})|[^{])*){\/searchHL}/g <br>t=t.replace(r,"<span class='highlight'>$1</span>"); <br>obj.innerHTML=t; <br>alert(" "+cnt+" ") <br>} <br>function replace(s,dest){ <br>var r=new RegExp(s,"g"); <br>var tm=null; <br>var t=dest.nodeValue; <br>var cnt=0; <br>if (tm=t.match(r)){ <br>cnt=tm.length; <br>t=t.replace(r,"{searchHL}"+decode(s)+"{/searchHL}") <br>dest.nodeValue=t; <br>} <br>return cnt; <br>} <br> <br>

html 부분
 
  


















ID Name Desc


 
  




PCOMM11
caracter handle
hkdlhglfghfkgfk


PCOMM12
digital handle
hkdlhglfghfkgfkgggg


좋은 웹페이지 즐겨찾기