- ベストアンサー
リンクを押したときのDIVタグの動きの制御
早速質問させていただきます。 現在止まっているのは、DIVタグに有るid属性が変数かつ DIVタグが複数ある場合にどのように取得し、表示の制御をしようかと悩んでいます。 制御内容として、 有る一番上のところをクリックすると、他の開いている状態のDIVのSTYLEをnoneにするということを行いたいのです。 id属性が固定値なら何とかなると思うのですが、変数かつDIVタグがそのときによって数が変わるためどのように値を取得して制御すれば良いかわかりません。 以上なのですが、何か解決の糸口があればご教授ください。お願いいたします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
IE限定ですが、 document.all.tags("div")
その他の回答 (1)
横から失礼します。 補足されているソースですが、 if (divcoll(i).id != "notClose") { divColl(i).style.display = "none"; このif分の条件文にある配列名が、アルファベットの大文字・小文字の不整合でオブジェクトが認識されていないように思います。 変数名・配列名・関数名などは、大文字小文字も区別されますので、多分これが原因なのではないかと。 if (divColl(i).id != "notClose") { に直せば動くと思いますよ。 横から失礼しました。
お礼
ありがとうございます。。。。。 完璧にボケてました^^; これでコンパイルエラーはなくなりましたが、 うまく切り替えまではいかず最上位だけ表示している状態になりました^^; ただ、alertでメッセージを出してみたら、noneとblock は切り替わっているようなのでまだどこかに単純なミスがあるかと・・・ 根詰めて探してみます。
お礼
早速ありがとうございます。 今回は、仕様上IE5.5以上限定のようなので使用出来そうです。 そこで、一度初期化処理を行って、引数だけblockにしようと思って以下のように書きました(回答をいただく間もネットをさまよって調べていました) function init(){ divColl = document.all.tags("DIV"); for (i=0; i<divColl.length; i++) { if (divcoll(i).id != "notClose") { divColl(i).style.display = "none"; } } } function Disp(tName){ var tMenu = document.all[tName].style; if(tMenu.display == "block"){ init(); } else { init(); tMenu.display = "block"; } } 階層として2階層あり、最上位のDIVタグの部分は消してくないので if (divcoll(i).id != "notClose") というif文を入れたのですが、エラーで「オブジェクトを指定してください」といわれました。 単純に記述がidだけでは足りないのでしょうか? 再度補足をしていただけたらと思います。