作者grassboy2 (活力花俏草兒仔政﹞O花俏)
看板Ajax
標題Re: [問題] 有辦法完全不用innerHTML嗎?
時間Wed Jul 7 05:26:49 2010
感謝大家的回應m(_ _)m
原來可以用createTextNode這招(筆記)
但其實我想解的問題是…
如果針對某一個<div id="div1">,他的child有若干個text node和img node夾雜
然後我想要放一個input給user輸入要搜尋的字串str
然後如果div1裡面有某個text node當中,有包含str
則在str前後加上<b>和</b>
看了一下各位大大的方法…
應該可以把有包含str的text node先找出 (放到node_array)
然後針對node_array中每個元素,根據str去split,然後再一段一段的放在new_node
再拿new_node去replace原本node_array中的元素
這樣應該可以作到不更動innerHTML的狀況下去動態為單一textNode插入<b> </b>
那…這樣算是最簡化的方法了嗎?
心目中最理想的方法是…
針對某個包含str的text node,
如果str在text node的第 x 個位置
就直接把 第x個位置的str先刪掉
然後直接插入一個包有textNode(str)的htmlElement("b")到原先text node的第x個位置
有辦法作到降子嗎?還是說textNode已經無法再行分割了?
再次感謝各位大大幫忙m(_ _)m
※ 引述《s25g5d4 (死城盜賊)》之銘言:
: <div id="div1">
: 今天天氣真好!
: </div>
: <script>
: var o=document.getElementById('div1');
: var ot=document.createElement('b');
: ot.appendChild(document.createTextNode('天氣'));
: o.replaceChild(ot,o.childNodes[0]);
: o.insertBefore(document.createTextNode('今天'),ot);
: o.appendChild(document.createTextNode('真好!'));
: </script>
: 這樣用不會比較好 但是幾乎把每個方法都玩到了@@
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.113.87.174
→ grassboy2:補充一下…之所以龜毛不用innerHTML,是不想讓某些東西 07/07 05:28
→ grassboy2:因為更動了innerHTML被reload,最明顯的例子是flash obj 07/07 05:28
推 s25g5d4:我是先插後刪 這樣比較好找位置... 07/07 20:07
→ grence:先想到用 innerHTML + regex解 07/07 21:32
→ s25g5d4:我有想過用REGEX 可是寫不出來 放棄了@@ 07/07 21:46
→ s25g5d4:來去正規表示式版問問看 07/07 21:47
→ grence:改完之後直接按上面的 run就可以測試 07/07 23:45