首页 > 解决方案 > 我无法制作一个不确定长度的 javascript 列表,仅在分配某些属性时才显示

问题描述

我有一个聊天框,我正在制作一个块功能。我几乎得到了代码,但它不起作用(Java 不是我的语言)。

我有这个属性,我可以让它消失,但我不能递归地做。在许多情况下,代码完全停止工作。

<table>
<td userclass="" username="cat">cat</td>
<td userclass="" username="hampster">hamster</td>
<td userclass="" username="dog">dog</td>
</table>

<p id="message"></p>

<script>
  var x = document.getElementsByTagName("td");
  var i;
  for (i = 0; i < x.length; i++) {

        var btn = document.getElementsByTagName("td")[i];
        var x = btn.attributes[1].value;

        if (x="hamster")
        {
          document.getElementsByTagName("td")[i].style.visibility = "hidden";
        }else{
          document.getElementsByTagName("td")[i].style.visibility = "visible";}
  }
</script>

在我包含“For”循环之前成功发生错误通常根本不做任何事情

标签: javascriptattributeshidden

解决方案


var在全局范围内定义一个变量。您正在使用它来存储属性的列表<td>和值。首先尝试使用不同的变量名:

var myTds = document.getElementsByTagName("td");
var i;
for (i = 0; i < myTds.length; i++) {
    var btn = myTds[i];
    var x = btn.attributes[1].value;

    if (x=="hamster") {
        myTds[i].style.visibility = "hidden";
    } else {
        myTds[i].style.visibility = "visible";
    }
}

另请注意:

1)您应该==用于比较;

2)你不需要使用document.getElementsByTagName("td").

3) 在您的 HTML 中更改username="hampster"username="hamster"以查看示例是否正常工作。

JSBin在这里


推荐阅读