我想將type =「password」的HTML'input'元素'type'屬性更改爲type =「text」。如何將HTML輸入類型屬性從「密碼」更改爲「文本」?
我知道通過ID查找元素會更容易,但不是每個頁面都有相同的密碼輸入ID。如何定位密碼輸入並將其內部值更改爲某種文本類型。
我的JavaScript代碼這幾行:
a=document.getElementsByTagName("input");
a.setAttribute(type,text);
我想將type =「password」的HTML'input'元素'type'屬性更改爲type =「text」。如何將HTML輸入類型屬性從「密碼」更改爲「文本」?
我知道通過ID查找元素會更容易,但不是每個頁面都有相同的密碼輸入ID。如何定位密碼輸入並將其內部值更改爲某種文本類型。
我的JavaScript代碼這幾行:
a=document.getElementsByTagName("input");
a.setAttribute(type,text);
該函數的調用document.getElementsByTagName
(具有S)和它產生元素的列表。所以你需要用索引來解決它(a[0]
第一個輸入等)
我認爲問題是確定哪些輸入,如果他們沒有標記ID,你將需要改變。
如果解決了「我如何定位密碼輸入並將其內部值更改爲某種文本類型」,這會更加完整。 – 2014-09-10 21:00:42
它是一個NodeList,而不是一個數組,雖然它在很多方面都是數組式的。 – Quentin 2014-09-10 21:00:43
好吧,我明白它會得到在文檔中找到的所有輸入,並將它們放入類似數組的列表中,但我如何才能找到發現的那個:type =「password」? – 2014-09-10 21:03:05
要轉換型密碼的所有元素文本:
var arr = document.getElementsByTagName("input");
for (var i = 0; i < arr.length; i++) {
if (arr[i].type == 'password') arr[i].setAttribute('type','text');
}
注:並非所有的瀏覽器允許在輸入type
屬性動態變化。
請注意,如果您檢查_attribute_,則需要以不區分大小寫的方式進行檢查。最好檢查一下類型本身(也就是'arr [i] .type')。 – 2014-09-10 21:15:10
@MrLister感謝您的提示。我更新了代碼。 – AlliterativeAlice 2014-09-10 21:16:55
非常感謝,迄今爲止這種方法非常有效! – 2014-09-10 21:30:20
您可以使用以下查詢獲取密碼字段。
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";
}
如果只有一個密碼輸入,這將是最簡單的,因爲它只會返回第一個密碼。它也不會支持IE <8。 – 2014-09-10 21:06:58
這是現代瀏覽器的好方法。但要小心,因爲它不適用於舊版瀏覽器:https://developer.mozilla.org/en-US/docs/Web/API/document.querySelector – 2014-09-10 21:07:08
嘗試使用'document.querySelectorAll()'獲取所有元素: https://developer.mozilla.org/en-US/docs/Web/API/document.querySelectorAll – 2014-09-10 21:08:15
這將每個輸入的類型密碼都轉換爲文本類型文本的輸入。
Array.prototype.slice.call(document.querySelectorAll('input[type="password"]'))
.forEach(function (elt) {
elt.setAttribute('type', 'text');
});
它是否必須在純JavaScript?如何jQuery? – DeFeNdog 2014-09-10 21:01:26
我開始認爲這是一個XY問題。你試圖解決的實際問題是什麼? – 2014-09-10 21:06:39
請注意,並非所有瀏覽器都支持動態更改輸入類型,我相信9以下的IE不會讓你 – 2014-09-10 21:06:50