如何获得具有给定属性的所有元素?

时间:2011-09-27 05:52:39

标签: javascript html

我希望获得<input />属性集的所有placeholder元素,如何在没有jquery的情况下执行此操作?它应该支持IE6 +和其他流行的浏览器。

4 个答案:

答案 0 :(得分:1)

假设所有字段都有ID

DEMO

var fieldsWithPlaceholder = [];
var inputs = document.getElementsByTagName("input");
for (var i=0, n=inputs.length;i<n;i++) {
  if (inputs[i].getAttribute("placeholder") !=null) {
    fieldsWithPlaceholder.push(inputs[i].id);
  }
}

alert(fieldsWithPlaceholder);

更新:你可以在其他地方发布测试null,undefined或空白:

if (inputs[i].getAttribute("placeholder")) { // there is something there

答案 1 :(得分:1)

使用getElementsByTagName,过滤那些占位符属性值未定义的内容。

顺便提一下,属性和属性之间存在很大差异,你真的追求它们吗?如果要在HTML中设置名为占位符的属性,则应使用 getAttribute 。但是,如果您正在设置DOM元素的属性(这是我从您的帖子中推测的那样),那么您应该直接使用该属性。希望你不要把两者混合在一起。

在某些浏览器中,属性和属性保持同步,但在其他浏览器中则不然。例如,Firefox不会为非标准属性(即那些未在相关标记标准中指定的属性)创建元素属性,也不会根据与HTML5不一致的版本中的属性更改来创建或修改标准属性

答案 2 :(得分:0)

首先获取输入类型的所有元素

document.getElementsByTagName("input")

循环上面的列表,然后使用

每个元素的getAttribute如下getAttribute("placeholder")如果它不为null或未定义,则输入已设置。

答案 3 :(得分:0)

尝试这样的事情:

var myEls = [],
    allEls = document.getElementsByTagName('input');

for (var i=0; i < allEls.length; i++) {
   if (allEls[i].placeholder)
      myEls.push(allEls[i]);
}