我想知道下面的代码是否将所有input type='text'
值都移回""
:
var inp = document.getElementsByTagName('input');
for (var i = inp.length - 1; i >= 0; i--) {
if ('text' === inp[i].type) inp[i].value = "";
}
然后我想知道我的input
是type='text'
,class
是.num_questions
。如何对其进行编码以便查找类名并为其赋值"1"
?
答案 0 :(得分:2)
Html Dom Element上有一个属性className
。
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 = "?";
}
}
编辑 - 根据要求进行跟进。
每个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;
}
另一种方法是使用正则表达式匹配;这就是我的所作所为,因为对我而言,它更加娴熟。我使用的正则表达式查找某些内容,然后是类名,后跟其他内容。第一个某事是(\\s+|^)
,英文中的意思是“一个或多个空白字符,或者,字符串的开头”。 别的东西是(\\s+|$)
,在英语中是“一个或多个空格字符,或字符串的结尾”。因此,整个正则表达式匹配一个由以下内容组成的字符串:
答案 1 :(得分:1)
嗯,我不认为你的问题应该被低估,在javascript中处理classNames并不容易。所以这是我的答案:
var inp = document.getElementsByTagName('input');
for (var i = inp.length-1; i>=0; i--) {
if ('text'===inp[i].type) {
if(inp[i].className.indexOf('num_questions') > -1){
inp[i].value = "1";
} else{
inp[i].value = "";
}
}
}