我知道我可以致电:
document.getElementsByTagName("input");
我是否需要遍历并检查type ==“text”的属性?
我知道jQuery有input[type="text"]
。
是否有任何简单的JavaScript方法来实现这一目标?
答案 0 :(得分:8)
除非代码在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);
}
}
}
else
案例中的 N.B。,如果输入如下,我会检查input.type
的真实性:
<input />
在这种情况下,默认 type="text"
。我仅包括此内容,因为我不能100%确定每个浏览器在关闭属性时是否会返回"text"
。至于记录,至少Chrome确实如此。 http://jsfiddle.net/mattball/jJsjn/
答案 1 :(得分:2)
这是你可以做到的:)
var elements = document.getElementsByTagName('input')
for(var e in elements)
{
if(e.type == "text")
{
}
}
答案 2 :(得分:1)
如果您可以使用,则可以使用Selectors API。
答案 3 :(得分:0)
它实际上是特定于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! */