【问题标题】:document.getElementsByTagName not workingdocument.getElementsByTagName 不起作用
【发布时间】:2016-02-26 21:10:39
【问题描述】:

我想使用document.getElementsByTagName('input') 根据需要设置(或取消设置)输入列表。 有可能吗?

我试过了:

document.getElementsByTagName('input').required = false;

或(用于不同目的)

document.getElementsByTagName('input').value = ""

但它似乎不起作用。

此外:是否可以捕获某种类型的输入(即文本或广播)?

谢谢!!! ObOnKen

【问题讨论】:

标签: javascript tags


【解决方案1】:

getElementsByTagName() 返回一个元素集合,因此您需要遍历该集合...

var elements = document.getElementsByTagName('input');

for(var i = 0; i < elements.length; i++)
{
    if(elements[i].type == "text")
    {
        elements[i].value = "";
    }
}

【讨论】:

    【解决方案2】:

    getElementsByTagName() 返回一个实时的HTMLCollection。如果您想对返回的每个项目执行某些操作,则必须显式地遍历它们:

    var inputs = table.getElementsByTagName('input'); 
    for (var i = 0; i < inputs.length; i++) { 
        inputs[i].required = false;
    }
    

    但是,如果您使用某些库,则可以使用您所期望的语法对集合的每个内容(或者,正如某些库所称的那样,选择)进行操作。

    【讨论】:

      【解决方案3】:

      您应该使用for 循环来迭代所有inputs,因为document.getElementsByTagName 返回具有给定标记名称的元素的HTMLCollection

      var values = document.getElementsByTagName('input');
      for (var i = 0; i < values.length; i++) {
          values[i].required = false;
      }
      

      捕捉某种类型的输入:

      var textInput = document.querySelector("input[type=text]");
      

      querySelector 返回文档中的第一个元素。

      【讨论】:

      • 仅使用querySelector 而不是getElementsByTagName 解决了我的问题。
      猜你喜欢
      • 2021-03-05
      • 1970-01-01
      • 2011-01-06
      • 1970-01-01
      • 2019-08-29
      • 1970-01-01
      • 2012-09-15
      • 2010-12-23
      • 1970-01-01
      相关资源
      最近更新 更多