className
Html Dom 元素上有一个属性。
function hasCssClass(elt,clz) {
return elt.className.match(new RegExp('(\\s+|^)'+clz+'(\\s+|$)'));
}
var inp = document.getElementsByTagName('input');
for (var i = inp.length-1; i>=0; i--) {
if ('text'===inp[i].type && hasCssClass(inp[i],'num_questions')) {
inp[i].value = "?";
}
}
http://jsbin.com/aluzuv/2
编辑- 按要求跟进。
每个 HTML DOM 元素都有一个className
属性,它是一个字符串,包含一个以空格分隔的 CSS 类列表,这些类适用于该元素。为了确定一个类是否适用于特定元素,您需要在列表中搜索该字符串。
有几种方法可以做到这一点。一种方法是用空格分割 className 字符串,然后查看所需的类(针)是否等于结果字符串数组中的任何元素。这可能是这样的:
function hasCssClass(elt, clz) {
var classes = elt.className.split(/\s+/);
for(i=0; i<classes.Length;i++) {
if (clz == classes[i]) return true;
}
return false;
}
另一种方法是使用正则表达式匹配;这就是我所做的,因为对我来说它更简洁。我使用的正则表达式查找something,然后是类名,然后是something else。第一个是(\\s+|^)
,它在英语中的意思是“一个或多个空白字符,或者,字符串的开头”。其他的东西是(\\s+|$)
,在英语中是“一个或多个空白字符,或字符串的结尾”。因此,整个正则表达式匹配一个字符串,该字符串包括: