我知道我可以打電話:沒有使用jQuery,我怎麼能得到按類型的輸入?
document.getElementsByTagName("input");
我需要遍歷並檢查屬性類型==「文字」?
我知道jQuery有input[type="text"]
。 是否有任何普通的JavaScript的方式來實現這一目標?
我知道我可以打電話:沒有使用jQuery,我怎麼能得到按類型的輸入?
document.getElementsByTagName("input");
我需要遍歷並檢查屬性類型==「文字」?
我知道jQuery有input[type="text"]
。 是否有任何普通的JavaScript的方式來實現這一目標?
你已經有了它主要是正確的 - 除非的代碼在運行a browser which supports querySelectorAll
。這是跨瀏覽器的代碼:
var textInputs;
if (document.querySelectorAll)
{
textInputs = document.querySelectorAll('input[type=text]');
}
else
{
textInputs = [];
var unfiltered = document.getElementsByTagName("input"),
i = unfiltered.length,
input;
while(i--)
{
input = unfiltered[i];
if (!input.type || input.type === 'text')
{
textInputs.push(input);
}
}
}
N.B.在else
情況下,我檢查的input.type
的情況下,感實性輸入是這樣的:
type="text"
<input />
。我只有包括這個,因爲我不是100%確定是否每個瀏覽器將返回"text"
屬性被關閉時。對於記錄,至少鉻做。 http://jsfiddle.net/mattball/jJsjn/
如果它提供給你,你可以使用Selectors API。
這是你如何能做到這:)
var elements = document.getElementsByTagName('input')
for(var e in elements)
{
if(e.type == "text")
{
}
}
它實際上是一個sizzlejs特異性不jQuery的本身。是的,放棄jquery是很好的。 DOM0集合將以最佳方式執行此任務:
for (var i = 0; i < document.forms.length; i++)
for (var j = 0; j < document.form[i].elements.length; j++)
/* have to do case-insensitive match to support any DOCTYPE */
if (document.form[i].elements[j].type.toUpperCase() == 'TEXT')
document.form[i].elements[j] = 'HAI!';
/* done! */
嗨,matt,有沒有很好的資源來查看這些瀏覽器方法功能的列表以及它們的支持? – john 2011-04-14 02:23:28
當然!這聽起來像你可能已經錯過了我的答案quirksmode的鏈接,所以這裏又是:http://www.quirksmode.org/dom/w3c_core.html#t13 – 2011-04-14 02:24:19
Chrome離開它時會返回'text',但你不能在querySelector中使用它。更新你的小提琴以顯示它:http://jsfiddle.net/rLq6xjb5/ – 2016-04-03 22:02:57