アプリ版:「スタンプのみでお礼する」機能のリリースについて

javaScriptを触り始めてまだ1週間の初心者です。
どうぞ熟練者の皆様、お知恵を貸して下さい。

「色々な種類のタグに指定されたIdから指定範囲("ABC"or"XYZ" + 000~999 の任意6文字)に当てはまるIdをHTMLファイルの前から順に取得し、それを配列にセットする」と言った関数を作りたいと思っています。

とりあえずIEではdocument.allを使用してそれらしく動いているのですが、これをNN環境でも動かしたいのです。NNで動くようにするにはどこに手を加えたら良いのでしょうか?それとも関数の作り自体変えるべきなのでしょうか?

良い解決策がありましたらお願いいたします。

該当部↓

var gArrayId = new Array();

function getSpanIDInfo()
{
 var intMaxNo = 0;
 var intIndex = 0;

 //配列宣言のため、まずは総数を調べる。
 for ( var item in document.all ) {
  // IDに"ABC"、"XYZ"を含むタグを見つける
  if((item.indexOf("ABC") != -1) || (item.indexOf("XYZ") != -1)) {
   intMaxNo = intMaxNo + 1;
  }
 }

 //カウント終了したらその数でID情報配列作成
 gArrayId = Array(intMaxNo - 1);

 //作成した配列にIDを保存
 for ( var item in document.all ) {
  // "ABC"、"XYZ"を含むタグを見つける
  if((item.indexOf("ABC") != -1) || (item.indexOf("XYZ") != -1)) {
   // 見つけた順に保存
   gArrayId[intIndex] = item.substring(0,7);
   intIndex = intIndex + 1;
  }
 }
 return intMaxNo;
}

A 回答 (1件)

NNというかNetscape 6以降になってしまいますが、総数を調べるループはこんな感じでしょうか。



 elm = document.getElementsByTagName("*");
 for ( i = 0; i < elm.length; i++) {
  // IDに"ABC"、"XYZ"を含むタグを見つける
  var item = elm[i].id;
  if((item.indexOf("ABC") != -1) || (item.indexOf("XYZ") != -1)) {
   intMaxNo = intMaxNo + 1;
  }
 }

配列にIDを保存する処理、ブラウザ振り分け処理は省略しても大丈夫とお見受けしました。
    • good
    • 0
この回答へのお礼

mrumesukeさま、ありがとうございました!
書きそびれていたのですが、Netscape6以降で動いてくれればそれで良かったので、おかげさまでバッチリ動作しております。
length…なるほど、こんな応用が…。
三日間回答が無かったらこの処理は諦めようと思っていましたので、とても助かりました。
本当にありがとうございました!!

お礼日時:2003/08/04 13:44

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!