如何为具有类的文本框赋值1

时间:2012-04-05 17:16:27

标签: javascript

我想知道下面的代码是否将所有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 = "";
}

然后我想知道我的inputtype='text'class.num_questions。如何对其进行编码以便查找类名并为其赋值"1"

2 个答案:

答案 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 = "?"; 
  }
} 

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;
}

另一种方法是使用正则表达式匹配;这就是我的所作所为,因为对我而言,它更加娴熟。我使用的正则表达式查找某些内容,然后是类名,后跟其他内容。第一个某事(\\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 = "";
      }
   }
}