我想选择以特定序列开头的所有元素。 序列将类似于work_XXXXXX。如何实现这个目标?
答案 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_
开头的所有元素。
如果您的意思是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;
}
}
}
当然,如果你使用像jQuery这样的库,那就容易多了。
$('*[id^=work')
答案 2 :(得分:0)
您可以对所有此类元素使用相同的类,并按类选择它们。