HTML中使用JavaScript创建TR和TD
2007-08-16 23:42
369 查看
有时候我们需要动态的创建Tr和Td对象.
这里要说的是在IE中和在FireFox中不同之处.
假设我们有下面这个玩意, 一个Table的壳子.
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<table id="table">
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
</table>
现在需要创建一个TR
IE中如下:
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
var table = document.getElementById("table");
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
var tr = table.insertRow();
这真是一个好东西, 不过在FireFox当中, 呵呵, 这个貌似不管用, 运行第二句就彻底玩完了. 应该写成下面这样
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
var table = document.getElementById("table");
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
var tr = document.createElement("tr");
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
table.appendChild(tr);
FireFox中完全是按照XML的写法来的, 这个代码在IE当中执行完全没有问题, 如果你想创建一个空的TR的话.
不过TD里面的内容则完全显示不出来. 我查了MSDN, 他是这么说的: "insertRow方法在Table/TBody/THead/TFoot中创建一个行对象, 并且将他插入到rows里面." 而appendChild方法似乎后一句没有做到.
td的操作方式也是一样
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
var tr = ...
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif)
if (ie) ...{
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
var td = tr.insertCell();
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif)
} else ...{
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
var td = document.createElement("td");
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
tr.appendChild(td);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif)
}
但是有个问题我没有搞明白, 就是按照上面说的理解, appendChild方法没有将TR插入到rows或者没有将TD插入到cells里面的话, 理论上应该不显示任何东西, 也就是Table下面在IE中认为什么都没有, 实际上我写了一个最简单的HTML来测试, 也是如此. 这是我得出这个结论的依据. 不过在我真正做的项目中却并非如此, 所有的TR和TD都非常正确的被显示出来了, 只是内容完全没有, 尽管innerHTML完全正确. 真是纳闷不已.
这里要说的是在IE中和在FireFox中不同之处.
假设我们有下面这个玩意, 一个Table的壳子.
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
<table id="table">
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
</table>
现在需要创建一个TR
IE中如下:
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
var table = document.getElementById("table");
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
var tr = table.insertRow();
这真是一个好东西, 不过在FireFox当中, 呵呵, 这个貌似不管用, 运行第二句就彻底玩完了. 应该写成下面这样
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
var table = document.getElementById("table");
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
var tr = document.createElement("tr");
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
table.appendChild(tr);
FireFox中完全是按照XML的写法来的, 这个代码在IE当中执行完全没有问题, 如果你想创建一个空的TR的话.
不过TD里面的内容则完全显示不出来. 我查了MSDN, 他是这么说的: "insertRow方法在Table/TBody/THead/TFoot中创建一个行对象, 并且将他插入到rows里面." 而appendChild方法似乎后一句没有做到.
td的操作方式也是一样
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
var tr = ...
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif)
if (ie) ...{
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
var td = tr.insertCell();
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif)
} else ...{
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
var td = document.createElement("td");
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
tr.appendChild(td);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif)
}
但是有个问题我没有搞明白, 就是按照上面说的理解, appendChild方法没有将TR插入到rows或者没有将TD插入到cells里面的话, 理论上应该不显示任何东西, 也就是Table下面在IE中认为什么都没有, 实际上我写了一个最简单的HTML来测试, 也是如此. 这是我得出这个结论的依据. 不过在我真正做的项目中却并非如此, 所有的TR和TD都非常正确的被显示出来了, 只是内容完全没有, 尽管innerHTML完全正确. 真是纳闷不已.
相关文章推荐
- Linux下之使用简单3种创建文件的命令,并实现一个Html和JavaScript小程序
- 创建博客园 博客阅读器(使用 JavaScript 和 HTML 的 Metro 风格应用)源码
- javascript---使用createElement动态创建HTML对象.窗体传值
- javascript---使用createElement动态创建HTML对象
- javascript---使用createElement动态创建HTML对象.窗体传值
- 使用JavaScript和DOM创建HTML表格
- 使用JavaScript获得tr有多少个(html中指定元素的个数)
- vb.net 使用 Regex Replace 正则 替换 Html字串的table中tbody第一个tr下的td为th
- javascript---使用createElement动态创建HTML对象.窗体传值
- javascript---使用createElement动态创建HTML对象
- JavaScript的String类型replace()方法介绍和使用replace()方法实现简单html模板替换功能
- 使用 JavaScript 创建Cookie
- 使用Javascript和DOM Interfaces来处理HTML
- HTML基础 table中的tr中的td标签中的valign属性设置文本靠上,中间,靠下
- 使用html与javascript制作简单的网页时钟
- Google Map API使用详解(十)——使用JavaScript创建地图详解(上)
- 使用W3C DOM方法和JavaScript动态创建搜索结果
- 在js中使用createElement创建HTML对象和元素
- 使用Javascript D3创建属于你的涂鸦作品
- 使用JavaScript设计一个简单的HTML倒计时页面