-2

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

然后我想知道我是否有一个inputwhich is type='text'but which classis .num_questions。我如何对其进行编码,以便它查找类名并为其赋值"1"

4

2 回答 2

2

classNameHtml 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+|$),在英语中是“一个或多个空白字符,或字符串的结尾”。因此,整个正则表达式匹配一个字符串,该字符串包括:

  • 空格或字符串开头
  • 所需的类名
  • 空格或字符串结尾
于 2012-04-05T17:39:43.213 回答
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 = "";
      }
   }
}
于 2012-04-05T17:39:42.643 回答