获取所有输入类型密码

rpf*_*rpf 6 javascript

我是javascript的新手.我想在我的html页面上获取所有输入类型密码.

我知道有一种方法可以使用Javascript来做这种事情,但我不知道如何.

然后,对于每一个,我想分配一个关于文本更改的事件.

我怎样才能做到这一点?

谢谢

Rob*_*sto 12

我认为你的意思是

<input type="password">
Run Code Online (Sandbox Code Playgroud)

如果是这样,你可以试试这样的函数:

function getPwdInputs() {
  var ary = [];
  var inputs = document.getElementsByTagName("input");
  for (var i=0; i<inputs.length; i++) {
    if (inputs[i].type.toLowerCase() === "password") {
      ary.push(inputs[i]);
    }
  }
  return ary;
}
Run Code Online (Sandbox Code Playgroud)

  • @Marcel Korpel在这种情况下有什么区别?如果`inputs [i] .type`为null,则会抛出异常,如果它不是String,那么`toLowerCase`将不存在,也会抛出异常.如果`inputs [i] .type`是一个String,那么`toLowerCase`将始终返回一个String. (4认同)

And*_*y E 7

我希望 Robusto 不介意我扩展他的解决方案,以获得在现代浏览器上表现更好的解决方案。Chrome、Safari、IE8 和 Firefox 都支持querySelectorAll,因此如果可用,使用它似乎更合适。

function getPwdInputs() 
{ 
  // If querySelectorAll is supported, just use that!
  if (document.querySelectorAll)
    return document.querySelectorAll("input[type='password']"); 

  // If not, use Robusto's solution
  var ary = []; 
  var inputs = document.getElementsByTagName("input"); 
  for (var i=0; i<inputs.length; i++) { 
    if (inputs[i].type.toLowerCase() === "password") { 
      ary.push(inputs[i]); 
    } 
  } 
  return ary; 
} 
Run Code Online (Sandbox Code Playgroud)

注意。这应该不是问题,但值得注意的是,它querySelectorAll会返回一个集合,而回退方法将返回一个数组。仍然没什么大不了的,它们都有length属性,并且成员的访问方式相同。