ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

JavaScriptコミュのIEでだけ動きません

  • mixiチェック
  • このエントリーをはてなブックマークに追加
次のようなものを書いてみたのですが、Safari、Firefox、Netscapeで動くのに、IEで動きません。どこを直せば良いのでしょうか・・・。

htmlファイル
<a href="#" onMouseover="disBlock('explain01')" onMouseout="disNone('explain01')">メニュー1</a>
<div id="explain01" style="display: none;">メニュー1の説明文</div>
<a href="#" onMouseover="disBlock('explain02')" onMouseout="disNone('explain02')">メニュー2</a>
<div id="explain02" style="display: none;">メニュー2の説明文</div>

jsファイル
function disBlock(id){
if(document.all || document.getElementById){
if(document.all){
obj = document.all(id).style;
}else if(document.getElementById){
obj = document.getElementById(id).style;
}
obj.display = "block";
}
}

function disNone(id){
obj.display = "none";
}

今までスクリプトは他人任せにすることが多かったのですが、デザイナーとして独立したので、JavaScript、本腰入れて勉強したいと思っています。よろしくお願いします。

コメント(3)

そのまんまで動きましたよ
IE6.0 winXPHome@SP2

とりあえずエラーを解析すると原因がわかるかもしれないので、IEのツール→インターネットオプション→詳細設定→真ん中らへんのブラウズ項目のスクリプトエラーごとに通知を表示するにチェック→OK
で、大体のエラー内容が出ると思うので
とわいえ、
onMouseout="disNone('explain02')

function disNone(id){
  obj.display = "none";
}
これだけじゃちょっと心許ないね。
obj が残ってるとはいえ。
それよりだったら、↓こうしてみれば? もっといい方法はいくらでもあるけど。

function findElement (id) {
  if (document.all || document.getElementById) return null;
  if (document.all) {
    return document.all(id);
  } else if (document.getElementById) {
    return document.getElementById(id);
  }
}
function disBlock(id){
  var obj = findElement(id);
  if (obj) obj.style.display = "block";
}
function disNone(id){
  var obj = findElement(id);
  if (obj) obj.style.display = "none";
}

というか document.all とか判別しなくても今のIEなら getElementById 動くよ。
JSやるならDOMは避けて通れない道だし、getElementById が動かないと他もダメだろうし、そんな古代遺産なブラウザなんぞ切っちゃってもいいと思うけどなあ。なんて。
にゃんこさん、申し訳ありません!
にゃんこさんのお教えに従い、スクリプトエラーを表示させようと詳細設定を見たところ、スクリプト自体、無効になってました。はじめての質問でこんな失態を・・・。これからも見捨てずにいてください・・・。勉強し直しますんで。

ε =(冫、)さん、ありがとうございます。いろいろなサイトから拾ってきたサンプルをつなぎあわせたりこねくりまわしたりして書いてみたんですが、document.allってのはいったいどのブラウザのどのバージョンのために書いているのかも理解してませんでした・・・。IE4以前なんですね。確かに、必要ないです。

お勧めいただいた書き方も、じっくり試してみます。取り急ぎ、こんな情けない原因だったことをお知らせしなければと思いまして。ほんとに、すみませんでした。はじめてひとりで作るサイトで、検証作業もはじめてだったんで、何のはずみだか、スクリプトが無効になってるなんて全く気づきませんでした。

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

JavaScript 更新情報

JavaScriptのメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。