本文详细介绍JavaScript动态创建表格并添加数据的三种方法。涵盖标准DOM实现、IE6/7兼容方案及针对IE6 tbody渲染问题的修正技巧。通过具体代码示例,解析createElement、appendChild及表格结构处理,帮助开发者解决跨浏览器兼容性问题。
JavaScript动态创建表格概述
本文通过具体实例,详细讲解在JavaScript中动态生成HTML表格并向其中插入数据的实现方法。内容旨在为开发者提供可直接参考的代码方案,并对核心逻辑进行逐步剖析,以便读者理解其工作原理。
基础动态表格实现(非IE6兼容)
第一种方案展示了动态创建表格的基本实现方式。需要注意的是,该代码在IE6浏览器环境下存在兼容性问题,无法正常运行,适用于现代浏览器环境。
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>动态创建表格</title>
<script type="text/javascript">
function AppendTableData() {
var table = document.getElementById("tblMain");
var data = { "百度": "http://www.baidu.com",
"本站": "https://www.jb51.net",
"搜狐": "http://www.sohu.com"
};
for (var key in data) {
var tr = document.createElement("tr");
var td1 = document.createElement("td");
td1.innerText = key;
//FireFox不支持innerText,只能使用innerHTML
tr.appendChild(td1);
var td2 = document.createElement("td");
td2.innerHTML = "<a href='" + data[key] + "'>" + data[key] + "</a>";
tr.appendChild(td2);
table.appendChild(tr);
}
}
</script>
</head>
<body>
<table id="tblMain"></table>
<input type="button" value="动态添加网格数据"
onclick="AppendTableData()" />
</body>
</html>
IE6与IE7兼容方案
第二种方案针对IE6和IE7浏览器进行了兼容性优化。通过调整DOM操作细节,解决了旧版Internet Explorer浏览器中的渲染错误,确保在IE6和IE7环境中能够正确显示动态生成的表格数据。
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>添加网格数据(处理了IE兼容问题)</title>
<script type="text/javascript">
function AppendData() {
var data = {"本站":"https://www.jb51.net",
"百度":"http://www.baidu.com",
"搜狐": "http://www.sohu.com"};
var table = document.getElementById("tblMain");
for (var key in data) {
var value = data[key];
var tr = table.insertRow(-1);
//FireFox必须使用-1这个参数
var td1 = tr.insertCell(-1);
td1.innerText = key;
var td2 = tr.insertCell(-1);
td2.innerHTML = "<a href='" + value + "'>" + value + "</a>";
}
}
</script>
</head>
<body>
<table border="1" id="tblMain"></table>
<input type="button" value="添加网格数据(处理了IE兼容问题)"
onclick="AppendData()" />
</body>
</html>
IE6表格结构修正技巧
3. 动态创建表格(兼容IE6、IE7)
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>动态创建表格(处理IE6兼容问题)</title>
<script type="text/javascript">
function AppendTableData() {
var table = document.getElementById("tblMain");
var data = { "百度": "http://www.baidu.com",
"本站": "https://www.jb51.net",
"搜狐": "http://www.sohu.com"
};
for (var key in data) {
var tr = document.createElement("tr");
var td1 = document.createElement("td");
td1.innerText = key;
tr.appendChild(td1);
var td2 = document.createElement("td");
td2.innerHTML = "<a href='" + data[key] + "'>" + data[key] + "</a>";
tr.appendChild(td2);
//table.appendChild(tr); 把这一句替换掉
table.tBodies[0].appendChild(tr);
}
}
</script>
</head>
<body>
<!--由于动态添加的数据在debugbar中看生成的HTML代码发现,
会自动添加一个<tbody>
并且内容是空的,把我们动态生成的数据给冲掉了,
所以我们手工添加一个<tbody>
tr添加到这个<tbody>下面
-->
<table id="tblMain"><tbody></tbody></table>
<input type="button" value="动态添加网格数据"
onclick="AppendTableData()" />
</body>
</html>
希望上述关于JavaScript动态创建表格及数据添加的三种实现方案,能为各位程序开发人员提供有价值的参考与帮助。