Re: [問題] 有辦法完全不用innerHTML嗎?

看板Ajax作者 (活力花俏草兒仔政﹞O花俏)時間14年前 (2010/07/07 05:26), 編輯推噓1(108)
留言9則, 3人參與, 最新討論串4/11 (看更多)
感謝大家的回應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

07/07 05:28, , 1F
補充一下…之所以龜毛不用innerHTML,是不想讓某些東西
07/07 05:28, 1F

07/07 05:28, , 2F
因為更動了innerHTML被reload,最明顯的例子是flash obj
07/07 05:28, 2F

07/07 20:07, , 3F
我是先插後刪 這樣比較好找位置...
07/07 20:07, 3F

07/07 21:32, , 4F
先想到用 innerHTML + regex解
07/07 21:32, 4F

07/07 21:46, , 5F
我有想過用REGEX 可是寫不出來 放棄了@@
07/07 21:46, 5F

07/07 21:47, , 6F
來去正規表示式版問問看
07/07 21:47, 6F

07/07 23:44, , 7F
http://jsfiddle.net/t7Dmv/ 可以直接改JavaScript區塊
07/07 23:44, 7F

07/07 23:45, , 8F
改完之後直接按上面的 run就可以測試
07/07 23:45, 8F

07/07 23:58, , 9F
07/07 23:58, 9F
文章代碼(AID): #1CCv-RAA (Ajax)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 4 之 11 篇):
文章代碼(AID): #1CCv-RAA (Ajax)