Javascript 如何将HTML输入类型属性从';密码';至';文本';?

Javascript 如何将HTML输入类型属性从';密码';至';文本';?,javascript,html,dom,Javascript,Html,Dom,我想将HTML“input”元素的“type”属性从type=“password”更改为type=“text” 我知道按ID查找元素会更容易,但不是每个页面都有相同的密码输入ID。如何将密码输入作为目标并将其内部值更改为文本类型 我有以下几行JavaScript代码: a=document.getElementsByTagName("input"); a.setAttribute(type,text); 该函数被称为document.getElementsByTagName(带有一个s),它

我想将HTML“input”元素的“type”属性从type=“password”更改为type=“text”

我知道按ID查找元素会更容易,但不是每个页面都有相同的密码输入ID。如何将密码输入作为目标并将其内部值更改为文本类型

我有以下几行JavaScript代码:

a=document.getElementsByTagName("input"); 
a.setAttribute(type,text);

该函数被称为
document.getElementsByTagName
(带有一个s),它生成一个元素列表。因此,您需要使用索引来解决它(
a[0]
用于第一次输入,等等)


我认为问题在于确定哪些输入需要更改,如果它们没有用ID标记。

要将密码类型的所有元素转换为文本:

var arr = document.getElementsByTagName("input");
for (var i = 0; i < arr.length; i++) {
    if (arr[i].type == 'password') arr[i].setAttribute('type','text');
}
var arr=document.getElementsByTagName(“输入”);
对于(变量i=0;i

注意:并非所有浏览器都允许动态更改输入的
类型
属性。

您可以使用以下查询获取密码字段

document.querySelector('input[type="password"]').type = "text";
如果要处理多个字段,可以使用
querySelectorAll
并循环遍历它们

var pwds = document.querySelectorAll('input[type="password"]');
for (var i=0;i<pwds.length;i++){
pwds[i].type = "text";
}
var pwds=document.querySelectorAll('input[type=“password”]”);

对于(var i=0;i这会将每个密码类型的输入转换为文档的文本类型的输入

Array.prototype.slice.call(document.querySelectorAll('input[type="password"]'))
    .forEach(function (elt) {
        elt.setAttribute('type', 'text');
    });

如果它解决了“如何将密码输入作为目标并将其内部值更改为文本类型”,那么这将更加完整它是一个节点列表,不是一个数组,尽管它在很多方面与数组类似。好的,我知道它将获取文档中找到的所有输入,并将它们放入一个类似于列表的数组中,但是我如何才能将找到的一个作为目标:type=“password”?只需查找type属性设置为
“password”的一个
。是否必须使用纯javascript?jQuery如何?我开始认为这是一个XY问题。您试图解决的实际问题是什么?请注意,并非所有浏览器都支持动态更改输入类型,我相信IE 9不会允许您使用。我想在Google Chrome中将其转换为可点击书签。因此jQueryy不适用,只适用于JavaScript。如果只有一个密码输入,这是最简单的,因为它只会返回第一个密码。而且它不支持IE<8。这是一种在现代浏览器中使用的好方法。但是要小心,因为它不适用于较旧的浏览器:尝试
document.querySelectorAll()
获取所有元素:@Ramy我添加了与我的(现在已删除)不同的内容。他是一个证明。请注意,如果检查属性,则需要以不区分大小写的方式进行检查。最好检查类型本身(即,
arr[I]。键入
)@MrLister谢谢你的提示。我已经更新了代码。非常感谢,这个方法到目前为止运行得非常好!@MrLister-你确定吗?声明:
在HTML文档上调用时,getElementsByTagName()继续之前,请将其参数小写。
@PM77-1区分大小写的问题是返回值
getAttribute()
,而不是传递给
getElementsByTagName()的参数。