我正在尝试根据用户的选择显示行。假设他只想要3行,那么第四行和第五行将隐藏。请在下面找到html和javascript的部分。
HTML
<table>
<tr id="sRow1">
<td>1a</td>
<td>1b</td>
</tr>
<tr id="sRow2">
<td>2a</td>
<td>2b</td>
</tr>
<tr id="sRow3">
<td>3a</td>
<td>3b</td>
</tr>
<tr id="sRow4">
<td>4a</td>
<td>4b</td>
</tr>
<tr id="sRow5">
<td>5a</td>
<td>5b</td>
</tr>
</table>
的JavaScript
// b gets value from xml file
while (b <= 5)
{
var rowName = "sRow" + b;
alert(rowName);
try {
document.getElementById(rowName).style.display = "none";
}
catch (err)
{
alert(err.description)
}
b++;
}
我在document.getElementById(rowName).style.display =“none”;收到了Object required错误。你能帮忙吗?
答案 0 :(得分:1)
你错过了有趣的一点(b
来自哪里),所以我只想猜测:有时 b
实际上并不是1之间的数字和5。也许它是一个字符串,不能完全格式化为一位数的数字1-5,或者它可能是完全不同的东西......让我们让你的代码更安全一些,以防万一我是对的:
// b gets value from xml file
// ensure b is a number - will fail comparison if NaN
b = new Number(b);
while (b <= 5)
{
var rowName = "sRow" + b;
var row = document.getElementById(rowName);
if ( row ) // verify element was found before trying to modify it!
row.style.display = "none";
b++;
}
请注意,我已删除了try {} catch
- 您最好只测试getElementById()
的返回值,因为如果您希望稍后使用调试器,那么这不会影响调试...
答案 1 :(得分:1)
根据我的经验,你会在不同的浏览器中得到不一致的结果,试图通过修改样式属性来使表行不可见。更安全的做法是使用表对象上的insertRow()和deleteRow() dom方法从表中实际删除和插入行。这可以在您可能遇到的所有主要浏览器中得到适当支持。
答案 2 :(得分:0)
我认为你缺少带有行id的runat属性,因为你已经提到了行的id但没有提到runat属性,如果你没有提到runat属性那么那个错误就来了。