作者cyril63 (阳光 海与沙滩)
看板Web_Design
标题Re: javascript的问题
时间Thu Jan 19 10:16:38 2006
嗯...找到解答了
顺便跟版友们分享
首先...
innerHTML 这个property 使用在 table,thead,tbody,tr这几个物件时
在IE的浏览器上 是 readonly 的..
亦即当你想改变innerHTML property时....IE会出现run time error
但听说其他browser(Mozilla,firefox...)不会..不过我也没试过
再来...
LPH66 大大所分享的方法..经过测试以後..的确不会出现runtime error
因为span 的innerHTML是可读可写的
但是塞到 span 物件里的 html 如果包含table相关的物件(即上述的四种物件)
并无法顺利显示在画面上...
最後...
经过上面两种分析..似乎要使用innerHTML的方式塞入table物件..似乎相当困难
不过也是有漏洞可钻...
关键是使用 behevior ...(不过这个我不懂所以都照抄)
先 create 一个档(tmlinnerhtml.htc)如下
<public:component lightweight="true" name="innerHTMLTable"
urn="innerHTMLTable">
<public:property name="innerHTML" get="getInnerHTML"
put="setInnerHTML" id="innerHTML_ID"/>
</public:component>
<script>
function getInnerHTML()
{
var s = outerHTML.substr(outerHTML.indexOf(">")+1);
return s.substr(0,s.length - 8);
}
function setInnerHTML(value)
{
var oldInnerHTML = getInnerHTML();
if(value != oldInnerHTML)
{
outerHTML = outerHTML.substr(0,outerHTML.indexOf(">")+1)
+ value + "</table>";
innerHTML_ID.fireChange();
}
}
</script>
再来
在你的 html 里 , css 宣告区块里面
加入
table
{
behavior:url(tblinnerhtml.htc);
}
这样子的话 就可以在table物件里任意读写innerHTML这个属性了
并且可以正常显示
※ 引述《LPH66 (运命のルーレット廻して)》之铭言:
: ※ 引述《cyril63 (阳光 海与沙滩)》之铭言:
: : 3. innerHTML无法使用在<table> , <thead> , <tbody> , <tr>物件
: 那你可以用一个<span></span>放在你要插入的位置
: 然後用innerHTML写入
: ex:
: <table>
: <tr><td>some data already here</td><td>yet some data</td></tr>
: <span id="insert"></span>
: </table>
: 然後在javascript里:
: document.getElementById("insert").innerHTML
: ='<tr><td>inserted some text in the table</td><td>yet another</td></tr>'
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 60.248.162.55
※ 编辑: cyril63 来自: 60.248.162.55 (01/19 10:18)
1F:推 cjoe:这一篇不错,还可以教人家怎麽用innerHTML 01/19 12:26