作者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
1F:→ grassboy2:补充一下…之所以龟毛不用innerHTML,是不想让某些东西 07/07 05:28
2F:→ grassboy2:因为更动了innerHTML被reload,最明显的例子是flash obj 07/07 05:28
3F:推 s25g5d4:我是先插後删 这样比较好找位置... 07/07 20:07
4F:→ grence:先想到用 innerHTML + regex解 07/07 21:32
5F:→ s25g5d4:我有想过用REGEX 可是写不出来 放弃了@@ 07/07 21:46
6F:→ s25g5d4:来去正规表示式版问问看 07/07 21:47
8F:→ grence:改完之後直接按上面的 run就可以测试 07/07 23:45