作者No (you stay there)
看板Ajax
标题Re: [问题] 有办法完全不用innerHTML吗?
时间Thu Jul 8 00:48:18 2010
※ 引述《s25g5d4 (死城盗贼)》之铭言:
1F:→ s25g5d4:不过 现在的问题是怎麽回复被加粗的字...我累了XDDD 07/07 19:16
2F:推 No:在<b>加上一个辨识用的attr,例如className之类的 07/07 21:09
3F:→ No:搜寻前先反向回复,这样呢 07/07 21:10
4F:→ s25g5d4:这个方法不错 可是.....明天吧 不然No大来~ 07/07 21:46
我来了XDD
原本s25大的部份新增注解的那一行
(只节录部份)
if(i%2==1){
var a=document.createElement("b");
a.className="boldTag4Search"; //新增一行
a.appendChild(document.createTextNode(array[i]));
按钮的onclick事件改为呼叫 goSearch,参数不变
//---以下为新增function
function goSearch(target,search_str)
{
reverse_str(target);
search(target,search_str);
}
function reverse_str(target)
{
var tag, textNode, preText, nextText;
var bt=target.getElementsByClassName('boldTag4Search');
while((tag=bt[0]))
{
preText=getNeighbor(tag.previousSibling);
nextText=getNeighbor(tag.nextSibling);
textNode=document.createTextNode((preText+tag.textContent+nextText));
tag.parentNode.replaceChild(textNode, tag);
}
}
function getNeighbor(tag)
{
if(tag==null || tag.nodeName!='#text')
return '';
var ret=tag.textContent;
tag.parentNode.removeChild(tag);
return ret;
}
//---新增部分结束
5F:推 No:我只用FF试而已XDD 07/07 22:53
上一篇推文也适用此篇,我只用Firefox测而已
切到IE8看到不支援getElementsByClassName的错误我就懒了...
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 111.252.82.111
※ 编辑: No 来自: 111.252.82.111 (07/08 00:51)
6F:推 s25g5d4:我找到支援IE的办法了 可惜现在的问题是IE不支援getElemen 07/08 12:46
7F:→ s25g5d4:tsByClassName 07/08 12:47
8F:→ s25g5d4:IE出错的原因是因为不支援split用正规表示式来保留被切的 07/08 12:48
9F:→ s25g5d4:的字 而且其实我发现这样写没意义 遇到叠字split就会开一 07/08 12:48
10F:→ s25g5d4:个a[i]=""了~ 等等在PO上V2.0 XDD 07/08 12:49
11F:→ No:大概只能自己写IE的getElementsByClassName吧~ 07/08 12:50
12F:推 s25g5d4:目前想到的办法是跟search一样 来个无限回圈找子节点 07/08 12:56