2014-09-10 93 views
3

我想將type =「password」的HTML'input'元素'type'屬性更改爲type =「text」。如何將HTML輸入類型屬性從「密碼」更改爲「文本」?

我知道通過ID查找元素會更容易,但不是每個頁面都有相同的密碼輸入ID。如何定位密碼輸入並將其內部值更改爲某種文本類型。

我的JavaScript代碼這幾行:

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

它是否必須在純JavaScript?如何jQuery? – DeFeNdog 2014-09-10 21:01:26

+0

我開始認爲這是一個XY問題。你試圖解決的實際問題是什麼? – 2014-09-10 21:06:39

+1

請注意,並非所有瀏覽器都支持動態更改輸入類型,我相信9以下的IE不會讓你 – 2014-09-10 21:06:50

回答

-1

該函數的調用document.getElementsByTagName(具有S)和它產生元素的列表。所以你需要用索引來解決它(a[0]第一個輸入等)

我認爲問題是確定哪些輸入,如果他們沒有標記ID,你將需要改變。

+1

如果解決了「我如何定位密碼輸入並將其內部值更改爲某種文本類型」,這會更加完整。 – 2014-09-10 21:00:42

+0

它是一個NodeList,而不是一個數組,雖然它在很多方面都是數組式的。 – Quentin 2014-09-10 21:00:43

+0

好吧,我明白它會得到在文檔中找到的所有輸入,並將它們放入類似數組的列表中,但我如何才能找到發現的那個:type =「password」? – 2014-09-10 21:03:05

2

要轉換型密碼的所有元素文本:

var arr = document.getElementsByTagName("input"); 
for (var i = 0; i < arr.length; i++) { 
    if (arr[i].type == 'password') arr[i].setAttribute('type','text'); 
} 

注:並非所有的瀏覽器允許在輸入type屬性動態變化。

+1

請注意,如果您檢查_attribute_,則需要以不區分大小寫的方式進行檢查。最好檢查一下類型本身(也就是'arr [i] .type')。 – 2014-09-10 21:15:10

+1

@MrLister感謝您的提示。我更新了代碼。 – AlliterativeAlice 2014-09-10 21:16:55

+0

非常感謝,迄今爲止這種方法非常有效! – 2014-09-10 21:30:20

1

您可以使用以下查詢獲取密碼字段。

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"; 
} 
+0

如果只有一個密碼輸入,這將是最簡單的,因爲它只會返回第一個密碼。它也不會支持IE <8。 – 2014-09-10 21:06:58

+0

這是現代瀏覽器的好方法。但要小心,因爲它不適用於舊版瀏覽器:https://developer.mozilla.org/en-US/docs/Web/API/document.querySelector – 2014-09-10 21:07:08

+2

嘗試使用'document.querySelectorAll()'獲取所有元素: https://developer.mozilla.org/en-US/docs/Web/API/document.querySelectorAll – 2014-09-10 21:08:15

1

這將每個輸入的類型密碼都轉換爲文本類型文本的輸入。

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