我想在table 中动态添加行,在fireFox 调试通过后在IE6下运行却失效了
请大家看看出了什么问题
<html>
<head>
<title>动态添加行</title>
<style type="text/css">
table{width:100px;border-collapse:collapse;}
td{border:1px black solid;}
</style><script type="text/javascript">
function insertTr()
{
var tableObj = document.getElementById("tab");
var trObj = document.createElement("tr");
//添加td1
var tdObj1 = trObj.insertCell(0);
var textObj = document.createElement("input");
textObj.setAttribute("type","text");
tdObj1.appendChild(textObj);//======================在IE6下执行这一句的时候停止了,为什么呢
//添加td2
var tdObj2 = trObj.insertCell(1);
var textObj1 = document.createElement("input");
textObj1.setAttribute("type","text");
tdObj2.appendChild(textObj1);
tableObj.appendChild(trObj);
}
</script>
</head>
<body>
<table id="tab">
<tr>
<td style="width:50%">123</td>
<td style="width:50%">321</td>
</tr>
</table>
<input type="button" onclick="insertTr();" /></body>
</html>
请大家看看出了什么问题
<html>
<head>
<title>动态添加行</title>
<style type="text/css">
table{width:100px;border-collapse:collapse;}
td{border:1px black solid;}
</style><script type="text/javascript">
function insertTr()
{
var tableObj = document.getElementById("tab");
var trObj = document.createElement("tr");
//添加td1
var tdObj1 = trObj.insertCell(0);
var textObj = document.createElement("input");
textObj.setAttribute("type","text");
tdObj1.appendChild(textObj);//======================在IE6下执行这一句的时候停止了,为什么呢
//添加td2
var tdObj2 = trObj.insertCell(1);
var textObj1 = document.createElement("input");
textObj1.setAttribute("type","text");
tdObj2.appendChild(textObj1);
tableObj.appendChild(trObj);
}
</script>
</head>
<body>
<table id="tab">
<tr>
<td style="width:50%">123</td>
<td style="width:50%">321</td>
</tr>
</table>
<input type="button" onclick="insertTr();" /></body>
</html>
tableObject.insertRow(index)
返回值
返回一个 TableRow,表示新插入的行。说明
该方法创建一个新的 TableRow 对象,表示一个新的 <tr> 标记,并把它插入表中的指定位置。新行将被插入 index 所在行之前。若 index 等于表中的行数,则新行将被附加到表的末尾。如果表是空的,则新行将被插入到一个新的 <tbody> 段,该段自身会被插入表中。
<html>
<head>
<title>动态添加行</title>
<style type="text/css">
table{width:100px;border-collapse:collapse;}
td{border:1px black solid;}
</style><script type="text/javascript">
function insertTr()
{
var tableObj = document.getElementById("tab");
var trObj = document.createElement("tr");
//添加td1
var tdObj1 = document.createElement("td");
var textObj = document.createElement("input");
textObj.setAttribute("type","text");
tdObj1.appendChild(textObj);
trObj.appendChild(tdObj1);
//添加td2
var tdObj2 = document.createElement("td");
var textObj1 = document.createElement("input");
textObj1.setAttribute("type","text");
tdObj2.appendChild(textObj1);
trObj.appendChild(tdObj2);
tableObj.appendChild(trObj);
if(document.all) tableObj.outerHTML = tableObj.outerHTML
}
</script>
</head>
<body>
<table id="tab">
<tr>
<td style="width:50%">123</td>
<td style="width:50%">321</td>
</tr>
</table>
<input type="button" onclick="insertTr();" /></body>
</html>
能不能讲一下
if(document.all) tableObj.outerHTML = tableObj.outerHTML
这句是什么意思
谢谢
<html>
<head>
<title>动态添加行</title>
<style type="text/css">
table{width:100px;border-collapse:collapse;}
td{border:1px black solid;}
</style><script type="text/javascript">
function insertTr()
{
var tableObj = document.getElementById("tab");
var trObj = document.createElement("tr");
//添加td1
var tdObj1 =document.createElement("td"); //trObj.insertCell(0);是这句出了问题,在IE里insertRow和insertCell一般要一起搭配使用
var textObj = document.createElement("input");
textObj.setAttribute("type","text");
textObj.setAttribute("value","2222222222");
tdObj1.appendChild(textObj);//======================在IE6下执行这一句的时候停止了,为什么呢
//添加td2
var tdObj2 =document.createElement("td"); ////trObj.insertCell(1);
var textObj1 = document.createElement("input");
textObj1.setAttribute("type","text");
textObj1.setAttribute("value","2222222222");
tdObj2.appendChild(textObj1);
trObj.appendChild(tdObj1);
trObj.appendChild(tdObj2);
tableObj.firstChild.appendChild(trObj);
}
</script>
</head>
<body>
<table id="tab">
<tr>
<td style="width:50%">123</td>
<td style="width:50%">321</td>
</tr>
</table>
<input type="button" onclick="insertTr();" value='--------------'/>
</body>
</html>
另外既然是使用js做Dynamic HTML 那么本人推荐用纯DOM去做而不推荐使用IE下的文本替换(innerHTML,outterHTML之类),因为这很容易出错比如id,name可能会相同,id相同就会找不到你想要的对象,name错了提交了服务层的数据就不对,此外有很多属性是IE特有的(包括innerHTML,outterHTML),故尽量使用W3C标准的