你好我有一个有几行的表。我的应用程序中有一个添加按钮,允许在任何rowIndex中添加行。我使用insertRow方法在特定位置插入行。因此,一旦插入一行,我就会更改所有行的表行ID,以按升序排列它们。现在我一直在用FF开发这个应用程序,它已经很好了。现在我对代码进行了一些更改,使其在IE中运行。但这只是在IE中不起作用。我在过去两天一直在测试这段代码,它适用于FF和chrome,但不适用于IE。我不确定,我犯的是什么错误。我只是用一个例子重新创建这个情况,这就是这个例子的代码。请帮帮我,告诉我,为了不在IE工作,我犯了什么错误。任何建议都会有很大的帮助。
<html>
<head>
<script type = 'text/javascript'>
function getIds()
{
var elem = document.getElementsByTagName("tr");
for(var i in elem)
{
if(elem[i] && elem[i].id!=null && elem[i].id!='')
alert(elem[i].id);
}
}
function changeIds()
{
var elem = document.getElementsByTagName("tr");
for(var i in elem)
{
if(elem[i] && elem[i].id!=null && elem[i].id!='')
{ index = Number(elem[i].rowIndex)+1; elem[i].id = "tabsf_"+index;}
}
alert('change');
}
</script>
</head>
<body>
<table id="tabsf">
<tbody>
<tr id="tabsf_1"><td>1</td><td>2</td></tr>
<tr id="tabsf_2"><td>3</td><td>4</td></tr>
<tr id="tabsf_5"><td>5</td><td>6</td></tr>
<tr id="tabsf_3"><td>7</td><td>8</td></tr>
<tr id="tabsf_4"><td>9</td><td>10</td></tr>
</tbody>
</table>
<table><tr><td><input type="button" name="hach" value="getIds" onclick="getIds()" /></td>
<td><input type="button" name="hach" value="Change Ids" onclick="changeIds()" /></td></tr></table>
</body>
</html>
</code>
答案 0 :(得分:0)
更新:首先尝试@Spinon的想法。
更新:实际上似乎是ID冲突,IE正确地防止了这种情况发生,而其他浏览器则乐意让它通过。
原始回答:
我的猜测是你的循环创建了一个id
碰撞:当循环运行时,id
被设置两次。 IE可以(正确地)阻止重复ID的设置。
我会先尝试取消设置ID:
for(var i in elem)
{
if(elem[i] && elem[i].id!=null && elem[i].id!='')
elem[i].id = elem[i].id + "_temp";
}
for(var i in elem)
{
if(elem[i] && elem[i].id!=null && elem[i].id!='')
{ index = Number(elem[i].rowIndex)+1;
elem[i].getElementsByTagName("td")[0].innerHTML = "tabsf_"+index;
elem[i].id = "tabsf_"+index;}
}
但是,我不明白你如何使用行ID来改变排序?
答案 1 :(得分:0)
我想说尝试使用setAttribute函数和id属性来更改id。
答案 2 :(得分:0)
问题是 for..in循环无法确保订单。这是<{3}}之一,为什么你应该为数组避免它们。 (还有另一个,请看我的链接) 使用简单的循环代替(对于i..n)
function getIds() {
var elem = document.getElementsByTagName("tr");
for (var i = 0; i < elem.length; i++) {
if (elem[i].id) {
alert(elem[i].id);
}
}
}
function changeIds() {
var elem = document.getElementsByTagName("tr");
for (var i = 0; i < elem.length; i++) {
if (elem[i].id) {
index = Number(elem[i].rowIndex) + 1;
elem[i].id = "tabsf_" + index;
}
}
alert('change');
}
完美跨浏览器。