作个例子先
<
table id="table"
>
< tr id="tr" >< td ></ td ></ tr >
< tr >< td ></ td ></ tr >
</ table >
< tr id="tr" >< td ></ td ></ tr >
< tr >< td ></ td ></ tr >
</ table >
一个2行的表单.
父节点
var
tr
=
document.getElementById(
"
tr
"
);
var parent = tr.parentNode;
var parent = tr.parentNode;
据说缺失TAG的话据说会错, 我没有试出来过, 说实话, 我写HTML很老实, 不会缺失什么Tag, 可能是以前XML写惯了, 都是well-formed, 而且层次结构清楚的很. 并且我本人对于那些利用Browser的解析能力偷懒的做法非常鄙视, 如果这样不如不要做程序员了, 这个工作本来就是需要严谨的态度的.
子节点
var
table
=
document.getElementById(
"
table
"
);
var children = table.childNodes();
var children = table.childNodes();
这个有点妖异. children是一个数组, 这个没有问题, 但是取children.length的时候问题就来了. IE下面没错, 长度为2, 2个TR么. FireFox下面就嘿嘿, 5个! 看到这里大家觉得奇怪了, 为什么5个呢? 多出来的3个是什么东西?
这个要说到W3C这个伟大的玩意. 我不知道大家有没有写过Java, Java里面有JDOM, DOM4J等第三方的XML解析工具, 不过终归还是遵循W3C的规范的, 上面的Table用这些第三方包解析的话, 没错, 2个子节点, 一点都不错. 不过你用Java自带的W3C解析, 哈哈, 5个, 的确是5个. 多出来的3个就是空白! 没错, 就是空白, 这些第三方包把空白去掉了, 或者你也可以理解为是CDATA, 只是为空而已. 比如<textarea>abc</textarea>, 这个abc也是一个节点, 不过我们通常都认为他是textarea的一个属性而已. 事实就是这样了. 不知道我这样说是不是够明白? 不明白也没有办法了, 就这样吧, 哈哈