试图隐藏表行时发生JavaScript错误
我试图根据用户的选择显示行。假设他只想要3行,那么第四行和第五行将隐藏。请在下面找到html和javascript部分 HTML试图隐藏表行时发生JavaScript错误,javascript,css,xhtml,Javascript,Css,Xhtml,我试图根据用户的选择显示行。假设他只想要3行,那么第四行和第五行将隐藏。请在下面找到html和javascript部分 HTML 1a 1b 2a 2b 3a 3b 4a 4b 5a 5b JavaScript // b gets value from xml file while (b <= 5) { var rowName = "sRow" + b; alert(rowName); try {
1a
1b
2a
2b
3a
3b
4a
4b
5a
5b
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++;
}
//b从xml文件中获取值
而(b你错过了有趣的部分(bb
来自哪里),所以我只想猜测:有时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++;
}
//b从xml文件中获取值
//确保b是一个数字-如果为NaN,则比较将失败
b=新编号(b);
虽然(b根据我的经验,如果试图通过修改样式属性使表行不可见,那么在不同的浏览器中会得到不一致的结果。更安全的做法是在表对象上使用和dom方法从表中删除和插入行。这在您可能会遇到的所有主要浏览器中都得到了适当的支持unter.我认为您缺少行id的runat属性,因为您提到了行的id,但没有提到runat属性,如果您没有提到runat属性,则会出现错误。我不明白您为什么需要在此处尝试catch。您确定document.getElementById(rowName)
实际找到元素?如果没有,它应该返回null
,进一步的属性访问-即.style.display
-应该会导致错误。为了防止出现这种情况,只需在尝试设置其样式之前检查元素是否存在。对我来说是有效的,例如b=4
。可能b
不是您所期望的?我想的是什么您在错误发生前收到的行名是什么?另一个奇怪的观察结果是,如果我将id名称从sRow更改为sib,它会起作用。sRow是某种类型的关键字吗。RegardsNo,但“sRow”可能在页面的其他地方有其他用途?您发布的内容是正确的,因此错误一定在其他地方。URL?谢谢。alerts(行名)显示正确的id。因此b的值不是问题所在。Regards@kobra:你确定吗?众所周知,在alert()
对话框中显示的字符串末尾很难看到空格…@Vagabond-将声明放入try{}解决了这个问题,这使它成为一个范围问题。@karim79:它不是范围。JavaScript中的范围不是这样工作的。请参阅我对您答案的评论…感谢您提醒我。我尝试了警报(rowName+“gs”)检查你的观点。仍然得到正确的警报。RegardsThanks。你能指出一些例子吗?我觉得这种方式很有趣。问候。当然。在我的答案中的方法名称链接中有代码示例。请参见上文。:)谢谢。很抱歉忽略了。关于在一行上设置“display:none”应该不会有任何问题;我在任何浏览器上都没有遇到过任何困难。但是,将其设置回“display:table row”并不是那么容易,因为IE中有一个bug,它需要“display:block”来代替。我通常发现添加/删除“hidden”是最容易的类,然后从CSS中选择“.hidden{display:none;}”。这是一个带有javascript的简单html网页。因此不会出现运行服务器或客户端的问题。注意
// 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++;
}