无法使用 getElementsByName() 在 IE 中切换表格行的显示

发布于 2024-09-01 21:37:26 字数 1227 浏览 5 评论 0原文

我想根据选择框的值显示和隐藏表格的行,这在 Firefox 中有效,但在 IE 中无效:

<select onChange="javascript: toggle(this.value);">
 <option value="cat0">category 0</option>
 <option value="cat1">category 1</option>
</select>

<table>
<tr name="cat0">
  <td>some stuff v</td>
  <td>some stuff v</td>
</tr>
<tr name="cat0">
  <td>some stuff d</td>
  <td>some stuff d</td>
</tr>
<tr name="cat1">
  <td>some stuff a</td>
  <td>some stuff a</td>
</tr>
<tr name="cat1">
  <td>some stuff b</td>
  <td>some stuff b</td>
</tr>
</table>
<script type="text/javascript">
function toggle(category)
{
    // turn everything off
    for (var i = 0; i < 2; i++)
    {
        var cat = document.getElementsByName('cat' + i);
        for (var j = 0; j < cat.length; j++)
            cat[j].style.display = 'none';
    }

    // turn on category chosen
    var cat = document.getElementsByName(category);
    for (var i = 0; i < cat.length; i++)
        cat[i].style.display = '';
}
// start by showing cat0
toggle('cat0');
</script>

I want to show and hide rows of a table based on the value of a select box and this works in Firefox but not IE:

<select onChange="javascript: toggle(this.value);">
 <option value="cat0">category 0</option>
 <option value="cat1">category 1</option>
</select>

<table>
<tr name="cat0">
  <td>some stuff v</td>
  <td>some stuff v</td>
</tr>
<tr name="cat0">
  <td>some stuff d</td>
  <td>some stuff d</td>
</tr>
<tr name="cat1">
  <td>some stuff a</td>
  <td>some stuff a</td>
</tr>
<tr name="cat1">
  <td>some stuff b</td>
  <td>some stuff b</td>
</tr>
</table>
<script type="text/javascript">
function toggle(category)
{
    // turn everything off
    for (var i = 0; i < 2; i++)
    {
        var cat = document.getElementsByName('cat' + i);
        for (var j = 0; j < cat.length; j++)
            cat[j].style.display = 'none';
    }

    // turn on category chosen
    var cat = document.getElementsByName(category);
    for (var i = 0; i < cat.length; i++)
        cat[i].style.display = '';
}
// start by showing cat0
toggle('cat0');
</script>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

一瞬间的火花 2024-09-08 21:37:27

IE 不允许您使用 document.getElementsByName 方法访问表行。如果你使用 ID 而不是名字,它就会起作用。请参阅此页面,了解符合您需求的代码: http:// /www.toolazy.me.uk/template.php?content=getelementsbyname.xml

IE doesn't let you access table rows using the document.getElementsByName method. If you use ID's instead of name's it will work. See this page for code that does just what you are looking for: http://www.toolazy.me.uk/template.php?content=getelementsbyname.xml

野侃 2024-09-08 21:37:27

对于第二个 for 循环中的表行,您需要将显示属性设置为 table-row

With table rows in your second for loop you need to set the display property to table-row

你对谁都笑 2024-09-08 21:37:27

实际上有一个 IE bug 你可以利用!只需为每个元素设置名称和 ID(两者必须具有相同的值!)。
例如:

现在 getElementsByName 也可以在 IE 中使用。

附注我知道这是一个老问题,但我五分钟前就试图解决这个问题。所以它可能对某人有帮助:p

There is actualy an IE bug You can use! Simply set for each element both name and id (both must have same value!).
For example:
<tr name="cat0" id="cat0">
Now getElementsByName will work in IE too.

ps. I know this is old question, but i was trying to solve this problem 5min ago. So it might help someone :p

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文