はじめまして。
IEだけで動くツリー表示をしたいと思っています。
ファイルを読み込んだとき、IEだけツリーの内容を閉じた状態で表示し、
それ以外のものは開いた状態で、ツリーの動作をしなくても良いと思っています。
一体どうすればいいでしょうか??

-----------------------------ソース---------------------------------
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<script Language="JavaScript"><!--
function check(){
str = navigator.appName.toUpperCase();
if (str.indexOf("EXPLORER") >= 0){
treeMenu1.display = "none";
}
}
function exMenu(tName)
{
tMenu = document.all[tName].style;
if (tMenu.display == 'none') tMenu.display = "block"; else tMenu.display = "none";
}
// --></script>
</head>

<body bgcolor="#FFFFFF" Onload="check()">
<a href="javaScript:exMenu('treeMenu1')">タイトル</a>
<div id="treeMenu1">
<table border=0 cellspacing=2 cellpadding=2 width="100%">
<tr bgcolor="#ffffff">
<td><font color="#808080">
<ul>
<li>内容1
<li>内容2
<li>内容3
<li>内容4
<li>内容5
<li>内容6
</ul>
</font></td>
</tr>
</table>
</div>
</body>
</html>

A 回答 (1件)

以下の様な動作をします。


IE限定
親をクリックで子を表示、再度親をクリックで子を非表示
子をクリックでリンク先表示

------------------------------------------------
function init(){
if(navigator.appName.charAt(0)=="M"){
document.all.child1.style.display="none";
} else {
location.href="exit.html";
}
}
------------------------------------------------
<body onLoad="init()">
<table><tr><td>
<div id="parent1" onClick="document.all.child1.style.display=document.all.child1.style.display=='none' ? '' : 'none'">
親1
</div>
<div id="child1">
<a href="">子1</a><br>
<a href="">子2</a><br>
<a href="">子3</a><br>
</div>
以下parent2-child2,parent3-child3...

</td><td>
コンテンツをここに表示
</td></tr></table>
</body>

使いやすいように手を加えてくださいませ。
    • good
    • 0
この回答へのお礼

ありがとうございます!

バッチリでした!!感謝感謝です!

お礼日時:2002/03/20 09:17

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

このQ&Aと関連する良く見られている質問

Q
  • の数を制限

    下記のソースのように<li>タグが多数あるものを
    上から3つのみを表示させるような形にしたいのですが
    (<li></li>を上から3つのみに制限)
    どのようなスクリプトを書けば良いでしょう?

    <div id="box">
    <ul>
    <li></li>
    <li></li>
    <li></li>
    <li></li>
    <li></li>
    <li></li>
    <li></li>
    <li></li>
    <li></li>
    <li></li>
    </ul>
    </div>

    ご伝授いただけるととても助かります!

    Aベストアンサー

    表示しない場合、表示させる仕組みはいらないのですか?
    最近のブラウザならnth-childなんて疑似クラスもあるみたいですが
    (当然IEは非対応)

    <style>
    #box li{
    display:none
    }
    #box li:nth-child(1),#box li:nth-child(2),#box li:nth-child(3){
    display:list-item;
    }
    </style>
    <div id="box">
    <ul>
    <li>1</li>
    <li>2</li>
    <li>3</li>
    <li>4</li>
    <li>5</li>
    <li>6</li>
    <li>7</li>
    <li>8</li>
    <li>9</li>
    <li>10</li>
    </ul>
    </div>

    Qの違い

    現在jQueryを使ったプログラムをしていて、気になった点があったので質問させていただきました。

    具体的には
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js" charset="utf-8"/>
    <script type="text/javascript">
    function show() {
    }
    </script>

    こんなソースを書いていましたが、showメソッドが認識されていませんでした。

    そこで
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js" charset="utf-8"></script>
    とかくと、後ろのメソッドも認識されました。

    ここで疑問なのは</>と</script>の違いです。
    この2つは何がちがうのでしょうか?

    現在jQueryを使ったプログラムをしていて、気になった点があったので質問させていただきました。

    具体的には
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js" charset="utf-8"/>
    <script type="text/javascript">
    function show() {
    }
    </script>

    こんなソースを書いていましたが、showメソッドが認識されていませんでした。

    そこで
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1...続きを読む

    Aベストアンサー

    https://www.google.com/search?q=HTML+%E7%A9%BA%E8%A6%81%E7%B4%A0
    違いっていうか。
    <hoge />って書いていいのは「何もはさまないタグ」だけ。<img><link><br>…
    <script>は、確かにsrc属性を設定すれば何もはさまなくはなりますが、「はさまないタグ」ではないから「/>」で終わることはできない。<img /> を<img></img>にすることはできるが逆はできません。

    試してないから分からないが、質問文の記述では最初の間違ったタグが開始タグとして認識され以降3行がスクリプトとして認識され、結果文法エラーとなっているのでは。というか、その書き方でほかの部分のソースの解釈に影響出てないんですか?

    Q
    勘でいれたら・・・

    はじめまして。JavaScript初めてです。
    わからないことがあるので、教えてください。

    画面を左右にフレームで分割して、左フレームのリストボックスから要素を選択すると、その要素に該当した表が右フレームに表示される、というものを作成しました。
    左フレーム:name = index
    右フレーム:name = main
    こんな感じ(左フレーム)↓
    <HTML>
    <HEAD>
    <SCRIPT language="JavaScript">
    <!--
    function disp(obj){
    右フレームの表のHTML作成をしている

    parent.main.document.open();
    parent.main.document.write
    (desc.innerHtml = 上で作成したHTML);
    parent.main.document.close();
    }
    -->
    </SCRIPT>
    </HEAD>
    <BODY onload="disp(form)">
    ※<DIV id="desc"></DIV>
    <FORM name="form">
    <SELECT name="MListBox" onchange="disp(form)">
    <xsl: apply-templates select="~"/>
    </SELECT>
    </FORM>
    *<DIV id="desc"></DIV>
    </BODY>
    </HTML>
      ・
      ・ <xsl文章>
      ・

    初めは、※←のところがなく、右と左のフレーム両方に表が出力されてしまっていました。でも※←のところに<DIV id="desc"></DIV>を勘で入れたとたん、右フレームだけに表が出力されるようになりました。(期待の結果)
    自分の予想では、*←のところのみで期待の結果が得られる予定で、(disp()でHTMLの出力を右フレームに指定しているから)何故※のところを追加したことで期待通りの動きをしたのかが謎です。

    わかりづらい説明で申し訳ないですが、教えてくださる方がいらっしゃいましたら、どうぞお願いします。

    はじめまして。JavaScript初めてです。
    わからないことがあるので、教えてください。

    画面を左右にフレームで分割して、左フレームのリストボックスから要素を選択すると、その要素に該当した表が右フレームに表示される、というものを作成しました。
    左フレーム:name = index
    右フレーム:name = main
    こんな感じ(左フレーム)↓
    <HTML>
    <HEAD>
    <SCRIPT language="JavaScript">
    <!--
    function disp(obj){
    右フレームの表のHTML作成をしている

    parent.main.document.open();
    parent....続きを読む

    Aベストアンサー

    質問文にあるソースで目指しているものがいまいち掴み切れていないかも知れないので、見当違いなことを書くかもしれませんが…

    <DIV id="desc"></DIV>

    を複数記述する事で意図した結果になったということですが、それはおそらく記述エラーが元でそうなっているのだと思います。
    id名は、各HTML文書内で固有の名前を与える属性として扱われます。 平たく言えば、一つのHTMLファイル内で、一つの要素に与えたid名はその一回しか使えません。 ですので、特定の要素で既に使われているid名を、それとは別の要素に対して与える事が許されていません。
    ご質問文のソースの場合、一つのHTML文書内で同じid名が複数の要素に与えられる事になり、一つの特定の要素を絞り込むことができなくなっています。 おそらくは、JavaScriptが特定のid名を持つ一つの要素を取り出そうとし、同じid名を持つ要素が複数あるために特定の要素を識別するのに失敗したせいで、左のフレームに表示されるはずのスクリプトで生成したHTMLソースが、表示先を見失って表示されなくなっているだけだと思われます。(なぜエラーメッセージが出ないのかについては、IEの動作上の問題と言う事になるのではないでしょうか)
    試しに、※の部分の<DIV id="desc"></DIV>を残して、*の部分の<DIV id="desc"></DIV>を消し、動作させてみてください。 それで元のように右フレームにだけ表示させたかったHTMLが左フレームにも表示されるようでしたら、一見期待通りの動きになった原因は、上記のように同じid名を複数の要素に与えたという記述ミスと、それから生じたスクリプトの動作不良と言う事になると思います。

    ソース的にスマートに目的の動作を確保するのであれば、<DIV id="desc"></DIV>を複数記述するのではなく、スクリプト内の

    parent.main.document.open();
    parent.main.document.write(desc.innerHtml = 上で作成したHTML);
    parent.main.document.close();

    この部分の記述を

    parent.main.document.open();
    parent.main.document.write(上で作成したHTML);
    parent.main.document.close();

    に直すのが良いと思います。
    フレームmainにだけ、スクリプトで生成したHTMLを表示するということが狙いだったのであれば、それまで意図通りの動作をしなかったのは、parent.main.document.write()の中で、「desc.innerHTML =」という記述をしているために、「上で生成したHTML」を、右フレーム内に書き出すのと同時に、descというidを持つ要素(*の<DIV id="desc"></DIV>)の中のHTMLソースとして再定義していたためと思われます。
    スクリプトを上のように修正すれば、HTMLソースの書式違反による動作不良ではなく、スクリプトの正常な動作で、右フレームにだけスクリプトで生成したHTMLソースを表示させるという結果を得られると思います。

    参考になれば。 見当違いでしたら、ごめんなさい。

    質問文にあるソースで目指しているものがいまいち掴み切れていないかも知れないので、見当違いなことを書くかもしれませんが…

    <DIV id="desc"></DIV>

    を複数記述する事で意図した結果になったということですが、それはおそらく記述エラーが元でそうなっているのだと思います。
    id名は、各HTML文書内で固有の名前を与える属性として扱われます。 平たく言えば、一つのHTMLファイル内で、一つの要素に与えたid名はその一回しか使えません。 ですので、特定の要素で既に使われているid名を、それとは別の要素...続きを読む

    Q 内に書くことはできません」

    元アルバイト先に頼まれてサイトを作り運営しているのですが、わからないことがあるので教えて下さい。

    サイトはXHTML1.0 Transitional で作っており、ここに、http://fmono.sub.jp/ の「w3Analyzer」を組み込みアクセス解析をしています。サイト自体もこのアクセス解析も正常に動作しています。
    ただ、このサイトをhttp://openlab.ring.gr.jp/k16/htmllint/htmllint.htmlで構文チェックすると、アクセス解析のタグにエラー「<img>を~行目の<script>~</script>内に書くことはできません。」が表示されてしまいます。
    エラーが表示されるタグは下記のようなものです。

    <script type="text/javascript">
    document.write('<img src="http://~/w3a/writelog.php?ref='+document.referrer+'" width="1" height="1" />');
    </script> >

    アクセスログは普通に取得できているので問題ないのですが、もし上記エラーを回避する方法があればご教授下さい。よろしくお願いします。

    元アルバイト先に頼まれてサイトを作り運営しているのですが、わからないことがあるので教えて下さい。

    サイトはXHTML1.0 Transitional で作っており、ここに、http://fmono.sub.jp/ の「w3Analyzer」を組み込みアクセス解析をしています。サイト自体もこのアクセス解析も正常に動作しています。
    ただ、このサイトをhttp://openlab.ring.gr.jp/k16/htmllint/htmllint.htmlで構文チェックすると、アクセス解析のタグにエラー「<img>を~行目の<script>~</script>内に書くことはできません。」が表示されてし...続きを読む

    Aベストアンサー

    XHTML には「ホンモノの XHTML」と「ニセモノの XHTML」があります。「ホンモノの XHTML」とは application/xml または application/xhtml+xml として識別されるもの、「ニセモノの XHTML」は text/html で識別されるものです。

    ※実際にはどちらも本物です。ここでは「HTML 互換として処理される XHTML」を「ニセモノ」、「XML として解析される XHTML」を「ホンモノ」と、カタカナ&カッコ付きで書いています。

    「ホンモノの XHTML」として見れば、質問文のソースは妥当性違反です。なぜなら、img 要素のタグがエスケープされていないため、これがスクリプトの一部ではなく文書構成要素だと判断されるからです。XHTML 1.0 のスキーマは、script 要素内に img 要素が出現することを許していません。もちろん、スクリプトとしても正しく動作しません。

    従って、XML のルールに従ってエスケープする必要があります。特に「<」と「&」は必ずエスケープしなければなりません。

    document.write('&lt;img .... />');

    ですが面倒なことに、「ニセモノの XHTML」ではこれが動作しなくなります。「ニセモノの XHTML」は、HTML との互換性のために script 要素内の「<」「&」をうまく扱ってくれるのですが、それが仇となり、上記では「&lt;」が「<」に戻りません。

    ならば、コメント区間にするのはどうでしょう。XML でもコメント内なら「<」「&」が現れても大丈夫です(ただし「--」だけは駄目です)。

    <script type="text/javascript"><!--
    document.write('<img .... />');
    //--></script>

    「ニセモノの XHTML」ならこれでも構いません。しかし、「ホンモノの XHTML」では、コメントは本当に破棄されてしまい、上記では動作すらしなくなります。

    そこで、XML/HTML のルールを使わず、JavaScript のルールでエスケープすることを考えます。

    document.write('\u003Cimg .... />');

    これなら大丈夫でしょう。XML/HTML に限らず、言語が混在する際は必ず適切なエスケープを施す必要があります。エスケープを避けたければ外部スクリプトにして下さい。


    なお、ここには別の問題があります。そもそも「ホンモノの XHTML」では、document.write を使用できません。これは HTML 互換の機能だからです(HTML5 に明記されています)。

    XHTML を採用するのであれば、それが「ホンモノ」でも「ニセモノ」でも大丈夫なよう、document.write に頼らないコードを作成して下さい。あるいは try...catch で括るなどして、「ニセモノ」として処理されたときのみコードが動作するよう工夫して下さい。あるいはいっそ、XHTML を止めるのも 1 つの選択でしょう。

    XHTML には「ホンモノの XHTML」と「ニセモノの XHTML」があります。「ホンモノの XHTML」とは application/xml または application/xhtml+xml として識別されるもの、「ニセモノの XHTML」は text/html で識別されるものです。

    ※実際にはどちらも本物です。ここでは「HTML 互換として処理される XHTML」を「ニセモノ」、「XML として解析される XHTML」を「ホンモノ」と、カタカナ&カッコ付きで書いています。

    「ホンモノの XHTML」として見れば、質問文のソースは妥当性違反です。なぜなら、img 要素のタ...続きを読む

    Q

    数十の<a>タグがあるHTMLファイルの中で、
    <div id="blank">で囲まれた<a>タグ群のみをすべてtarget="_blank"にしたいと考えています。
    該当する<a>タグすべてにtarget="_blank"を書くと、HTMLファイルの容量が大きくなるので、CSSのIDとJavaScriptを組み合わせて、実現できないものでしょうか。

    Aベストアンサー

    <base target="_blank">
    <div id="blank">
     <!-- -->
    </div>
    <base target="_self">


    人気Q&Aランキング

    おすすめ情報