如何按名称选择元素列表?

时间:2010-11-16 11:19:45

标签: javascript

我想选择以特定序列开头的所有元素。 序列将类似于work_XXXXXX。如何实现这个目标?

3 个答案:

答案 0 :(得分:1)

我在jquery和javascript中提供答案,但最好的选择是使用jquery,因为使用javascript你必须遍历所有元素并匹配你想要的patteren,这是非常耗时的过程所以我的偏好是使用jquery:

查找所有输入,其属性名称以“work_”开头,并将文本放入其中。

<input name="newsletter" />

<input name="work_man" />
<input name="work_boy" />
<script>
    $('input[name^="work_"]').val('work here!');
</script>

http://api.jquery.com/attribute-starts-with-selector/

http://api.jquery.com/category/selectors/

使用javascript他们不是内置关键字,但你可以通过循环遍历所有元素并检查所需模式的匹配,这样:

var idStart = "work_";
var componentContainer = document.getElementById("containerTable").getElementsByTagName("DIV");
for (var i = 0; i < componentContainer.length; i++) {
     var id = componentContainer[i].id;
     if ((id.length >= idStart.length) && (id.substring(0, idStart.length - 1) == idStart))// you can also use regular expression here to match desired pattern
     {
          //do something...
     }
}

答案 1 :(得分:1)

如果您指的是id属性,那么......

var elems = document.getElementsByTagName('*');

var myElems = [];

for(var i = 0, length = elems.length; i < length; i++) {

   if (elems[i].id.match(/^work_/)) {
    myElems.push(elems[i]);
   }

}

myElems将包含其id属性以work_开头的所有元素。

See it on jsfiddle.net

如果您的意思是class属性,则会有所不同。

var elems = document.getElementsByTagName('*');

var myElems = [];

for(var i = 0, length = elems.length; i < length; i++) {

   var classes = elems[i].className.split(' '); 

   for (var j = 0, classesLength = classes.length; j < classesLength; j++) {    
       // If you have a trim function, use it on the class name.
       if (classes[j].match(/^work_/)) {
           myElems.push(elems[i]);
           break;
       }
   }

}

See it on jsfiddle.net

当然,如果你使用像jQuery这样的库,那就容易多了。

$('*[id^=work')

答案 2 :(得分:0)

您可以对所有此类元素使用相同的类,并按类选择它们。