to robinzsy:你直接在html中输入当然可以了,问题是dom结构 试试这个代码 <body> <table id="t"></table> <script> var tbody = document.createElement("tbody") var tr = document.createElement("tr") var td = document.createElement("td") var text = document.createTextNode("are you sure?") td.appendChild(text) tr.appendChild(td) tbody.appendChild(tr) //document.getElementById("t").appendChild(tbody) 这个是IE的方法 document.getElementById("t").appendChild(tr) //这个是netscape </script> </body>
to BubbleInDiamond(以下想法纯属虚构) 我用下面的代码在Mozilla firfox下和IE下测试都是没有问题的。 mozilla与netscape用的是同样标准,所以netscape应该是支持tbody的。<body> <table id="t" border></table> <script type="text/javascript"> var tbody = document.createElement("tbody"); var tr = document.createElement("tr"); var td = document.createElement("td"); var text = document.createTextNode("are you sure?"); td.appendChild(text); tr.appendChild(td); tbody.appendChild(tr); document.getElementById("t").appendChild(tbody) ; </script> </body>
把多余空格删掉。
方法一:
<script language=javascript>
var tbl1 = document.getElementById("table1");
var tbd1 = document.getElementById("tbody1");for(i=0;i<tbd1.childNodes.length;)
{
var temp=tbd1.childNodes[i];
if(temp.nodeType==3)
{
tbd1.removeChild(temp);
}
else
{
i++;
}
}alert("table1一共有"+tbd1.childNodes.length+"个子节点");
for(i = 0;i<tbd1.childNodes.length;i++){
alert("第"+i+"个节点:"+tbd1.childNodes[i].nodeName);
}
</script>方法二:
<table id="table1" border="1" cellspacing="2" width="555">
<tbody id="tbody1"><tr>
<td height="16" width="62"><input value="1" type="text"></td>
<td height="16" width="127"> <input value="monitor" type="text">
</td>
<td height="16" width="109"><input value="广东东莞" type="text"></td>
<td height="16" width="92"> <input value="436" type="text"> </td>
<td height="16" width="131"> <input value="04/17/1997"
type="text"> </td>
</tr><tr>
<td height="17" width="62"> <input value="2" type="text"> </td>
<td height="17" width="127"> <input value="printer" type="text">
</td>
<td height="17" width="109"><input value="美国加州" type="text"></td>
<td height="17" width="92"> <input value="18" type="text"> </td>
<td height="17" width="131"> <input value="02/13/1998"
type="text"> </td>
</tr><tr>
<td height="16" width="62"><input value="3" type="text"></td>
<td height="16" width="127"> <input value="pc" type="text"> </td>
<td height="16" width="109"><input value="台湾" type="text"></td>
<td height="16" width="92"> <input value="143" type="text"> </td>
<td height="16" width="131"> <input value="01/01/2000"
type="text"> </td>
</tr></tbody>
</table>
试试这个代码
<body>
<table id="t"></table>
<script>
var tbody = document.createElement("tbody")
var tr = document.createElement("tr")
var td = document.createElement("td")
var text = document.createTextNode("are you sure?")
td.appendChild(text)
tr.appendChild(td)
tbody.appendChild(tr)
//document.getElementById("t").appendChild(tbody) 这个是IE的方法
document.getElementById("t").appendChild(tr) //这个是netscape
</script>
</body>
for(i = 0;i<tbd1.rows.length;i++){
要不用nodeType==1判断,要不用getElementsByTagName,再要不就用rows,没其它方法了
http://daconglee.home4u.china.com/
我用下面的代码在Mozilla firfox下和IE下测试都是没有问题的。
mozilla与netscape用的是同样标准,所以netscape应该是支持tbody的。<body>
<table id="t" border></table>
<script type="text/javascript">
var tbody = document.createElement("tbody");
var tr = document.createElement("tr");
var td = document.createElement("td");
var text = document.createTextNode("are you sure?");
td.appendChild(text);
tr.appendChild(td);
tbody.appendChild(tr);
document.getElementById("t").appendChild(tbody) ;
</script>
</body>
谢谢fason(Forbes Pu) 在51js上的回复,不过你的方法虽然可以解决问题,但并不是我想要的方案
netscape是支持tbody的,即,即使你的table中没有tbody标签,tbody也会出现在table的子节点当中
另外还有一个问题,想听听大家的看法。
如何获得整个document中所有nodeName为"#text",nodeValue=""的所有节点?
我写了一个递归的方法,虽然可以做到,但执行起来速度太慢。
我试了使用document.getElementsByTagName("#text")无法获取
你说的很有道理。
我在作一个很小的WEB框架,客户仅需要写一个配置文件,用我的系统解析自动生成相应的JSP、Servlet文件。目前我重点考虑的是对HTML标签<table>的扩展,使它能够跟具体的数据源关联,实现客户端通过编辑WEB页面上表格中的数据,自动地写回到相应的数据源。因此涉及到对WEB页面上的TABLE的操作。
客户端WEB上最终的源代码是由我的系统生成的,当然我可以控制,使整个HTML文档不包含空白等NETSCAPE解析有问题的字符,但这样,整个HTML文档可读性就不高了,不方便最终用户的使用。
谢谢你的指教
昨天还不出来,在家时候也写过,也是出不来,家里的版本是window版的7.0,好象bug比较多,回家再试试,如果还是听话,明天再来(不对,要周一才有得上网了)请罪……不过不知道俩位有没有试过appendChild(tr)应该都是可以用的吧(IE不行),如果还是有不同结果,请千万告知