我无法制作不确定长度的 javascript 列表,仅在分配了某些属性时才显示

I'm having trouble making a javascript list on indeterminate length only display when certain attributes are assigned

我有一个聊天框,我正在制作一个阻止功能。我几乎已经得到了代码,但它不起作用(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' 循环之前 错误通常什么都不做

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 here