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

input次に、 which istype='text'が which classisであるかどうかを知りたいです.num_questions。クラス名を探して値を与えるようにコーディングするにはどうすればよい"1"ですか?

4

2 に答える 2

2

classNameHtmlDomElementにプロパティがあります。

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

編集-要求に応じてフォローアップ。

各HTMLDOM要素には、要素に適用される空白で区切られたCSSクラスのリストclassNameを含む文字列であるプロパティがあります。クラスが特定の要素に適用されるかどうかを判断するには、リストでその文字列を検索する必要があります。

それを行うにはいくつかの方法があります。1つの方法は、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+|^)、英語で「1つ以上の空白文字、または文字列の先頭」を意味します。他の何か(\\s+|$)、英語では「1つ以上の空白文字、または文字列の終わり」です。したがって、正規表現全体は、次の要素で構成される文字列と一致します。

  • 空白または文字列の先頭
  • 希望するクラス名
  • 空白または文字列の終わり
于 2012-04-05T17:39:43.213 に答える
1

ええと、私はあなたの質問が反対票を投じられるべきではないと思います、classNamesを扱うことはjavascriptで簡単ではありません。だからここに私の答えがあります:

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 に答える