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

こんばんは。
下記のようなページを作っているのですが、質問です。

------¦-------------------
   ¦ B
   ¦-------------------
   ¦
 A  ¦ C
   ¦ 
   ¦
   ¦
   ¦
---------------------------

(↑ずれていたらスミマセン…)
ABCはそれぞれテーブルのセルの中に入れています。
Cの部分はIframe使用です。
Aというセルにリンクを幾つか置く予定です。
それは通常Cのインラインフレームの中に表示されます。

質問の内容は、そのAの中にあるリンクの一つをクリックすると、Bの領域とCの領域にそれぞれ違うページを表示出来ないかというご相談なのです。
Aの中のリンクの一つをクリックすると、Bにサブメニューが出て、同時にCにはBのサブメニューに対する説明が出る…というような。
そしてBに表示されたサブメニューをクリックするとCに次々表示される、という形にしたいのです。

要領を得ない質問で恐縮ですが、どなたかお知恵をお貸し頂けると幸いです。宜しくお願い致します!

A 回答 (4件)

> 別ページを作る」と仰ってらっしゃる方法


#2さんの回答の方法のことです。

> Bはフレームではなくてただの<td>なのですが
Bのセルの中にもCと同じようにiframeを置いてフレームを書き換える、という手段を提案されています。


以下は前回のサンプルを少し変更したものです。
前回のものよりはご希望に近いとは思いますが、カスタマイズするにはそれなりの知識が要るという点ではかわっていません。


<html>
<head>
<title>Menu</title>
<script type="text/javascript">
<!--
function MenuChange(Mno) {
var AllTag = document.getElementById('CellB').getElementsByTagName('*');
for(var i=0;i<AllTag.length;i++) {
if(AllTag[i].className.match(/^Menu(.+)/))
AllTag[i].style.display = (RegExp.$1 == Mno)?'block':'none';
}
AllTag = document.getElementById('CellC').getElementsByTagName('*');
var Iframe;
var Flag = 0;
for(var i=0;i<AllTag.length;i++) {
if(AllTag[i].className.match(/^Menu(.+)/)) {
if(RegExp.$1 == Mno) {
AllTag[i].style.display = 'block';
Flag = true;
} else {
AllTag[i].style.display = 'none';
}
} else if(AllTag[i].tagName.match(/iframe/i)) {
Iframe = AllTag[i];
}
}
Iframe.style.display = (Flag)?'none':'block';
}
function SubMenuClick() {
var AllTag = document.getElementById('CellC').getElementsByTagName('*');
for(var i=0;i<AllTag.length;i++) {
if(AllTag[i].className.match(/^Menu(.+)/)) {
AllTag[i].style.display = 'none';
} else if(AllTag[i].tagName.match(/iframe/i)) {
AllTag[i].style.display = 'block';
}
}
}
//-->
</script>
</head>
<body>
<table border width=700>
<tr>
<td rowspan="2" width=100 valign="top">
<a href="http://www.google.co.jp/" target="iframe" onclick="MenuChange(1);">google</a><br>
<a href="#" onclick="MenuChange(2);return false;">goo</a><br>
<a href="http://www.yahoo.co.jp/" target="iframe" onclick="MenuChange(3);">yahoo</a>
</td>
<td id="CellB">
<div class="Menu1" style="display:none;">
メニュー1です。
</div>
<div class="Menu2" style="display:none;">
<a href="http://www.goo.ne.jp/" target="iframe" onclick="SubMenuClick()">goo</a>
<a href="http://oshiete.goo.ne.jp/" target="iframe" onclick="SubMenuClick()">教えて!goo</a>
</div>
<div class="Menu3" style="display:none;">
メニュー3です。
</div>
</td>
</tr>
<tr>
<td id="CellC" height="400" valign="top">
<iframe name="iframe" style="display:none;" height="400" width="590"></iframe>
<div class="Menu2" style="display:none;">
<h2>goo</h2>
<p>gooって何? gooでは、サーチ・コンテンツ・コミュニティ・ショッピング・ビジネス・リサーチなどの総合的なWebサービスを提供しています。</p>
<p>教えて!gooとは? 知りたい事を質問して回答して貰えるサービスです。</p>
</div>
</td>
</tr></table>
</body>
</html>
    • good
    • 0
この回答へのお礼

何度もお手を煩わせてしまい、申し訳御座いませんでした。
折角素晴らしい回答を頂戴したのに、使いこなせず(まだまだ勉強が必要です…)この度は申し訳御座いませんが、諦め→スキルアップしてから再挑戦、という形にさせて頂きます。
本当に本当に有難う御座いました!
サンプルはもう、何も云う事無く素晴らしく、思う通りの動作なのですが…どうにも知識不足が否めません。

本当に有難う御座いました!

お礼日時:2005/06/04 00:50

Javascript部分がちょっと増えますが


セルBの内容やセルCに表示するメニューの説明を別ページにしないバージョンのサンプルを作ってみました。
(内容量によっては、素直に別ページに作った方がよさそうですが、内容量が少ない場合に。)

<html>
<head>
<title>Menu</title>
<script type="text/javascript">
<!--
function MenuChange(Mno) {
var AllTag = document.getElementById('CellB').getElementsByTagName('*');
for(var i=0;i<AllTag.length;i++) {
if(AllTag[i].className.match(/^Menu(.+)/))
AllTag[i].style.display = (RegExp.$1 == Mno)?'block':'none';
}
AllTag = document.getElementById('CellC').getElementsByTagName('*');
for(var i=0;i<AllTag.length;i++) {
if(AllTag[i].className.match(/^Menu(.+)/)) {
AllTag[i].style.display = (RegExp.$1 == Mno)?'block':'none';
} else if(AllTag[i].tagName.match(/iframe/i)) {
AllTag[i].style.display = (Mno == 0)?'block':'none';
}
}
}
function SubMenuClick() {
var AllTag = document.getElementById('CellC').getElementsByTagName('*');
for(var i=0;i<AllTag.length;i++) {
if(AllTag[i].className.match(/^Menu(.+)/)) {
AllTag[i].style.display = 'none';
} else if(AllTag[i].tagName.match(/iframe/i)) {
AllTag[i].style.display = 'block';
}
}
}
//-->
</script>
</head>
<body>
<table border>
<tr>
<td rowspan="2">
<a href="#" onclick="MenuChange(1);return false;">メニュー1</a><br>
<a href="#" onclick="MenuChange(2);return false;">メニュー2</a><br>
<a href="xxx.html" target="iframe" onclick="MenuChange(0)">メニュー0</a>
</td>
<td id="CellB">
<div class="Menu1">
<a href="aaa.html" target="iframe" onclick="SubMenuClick()">サブメニュー1-a</a>
<a href="bbb.html" target="iframe" onclick="SubMenuClick()">サブメニュー1-b</a>
</div>
<div class="Menu2" style="display:none;">
<a href="ccc.html" target="iframe" onclick="SubMenuClick()">サブメニュー2-c</a>
<a href="ddd.html" target="iframe" onclick="SubMenuClick()">サブメニュー2-d</a>
</div>
<div class="Menu0" style="display:none;">
サブメニューなし。
</div>
</td>
</tr>
<tr>
<td id="CellC">
<iframe name="iframe" src="" style="display:none;"></iframe>
<div class="Menu1">
メニュー1の説明文<br>
メニュー1の説明文
</div>
<div class="Menu2" style="display:none;">
メニュー2の説明文<br>
メニュー2の説明文<br>
メニュー2の説明文
</div>
</td>
</tr></table>
</body>
</html>

この回答への補足

御礼遅くなりまして申し訳御座いません。
首記の方法を試させて頂きましたがどうしても上手くいきません。

上手くいかない内容。
1.セルBにサブメニューを表示させるのは1つのメインメニューリンクからだけで良いのに、リンクを未選択の状態からサブメニューが出てしまう。
2.上記の内容を取り敢えず無視。サブメニューを表示させたいメインメニューからのリンクをクリックすると、iframeに何も表示されない。但しサブメニューは表示され、それをクリックするとiframeにはサブメニューの内容が表示される。

です。
どうも内容的に初心者の手には余るようで…。
もしお手すきでしたら「別ページを作る」と仰ってらっしゃる方法をご教授頂けませんでしょうか。
宜しくお願い致します。

補足日時:2005/06/02 23:51
    • good
    • 0

kokorone様のご意見に補足させて頂く形になります。



2つのフレームのページを同時に変更する、
簡単なサンプルを載せさせて頂きました。
_/_/_/_/_/_/_/_/_/_/
<script>
 function sample(){
  Bのフレーム名.location.href="アドレス";
  Cのフレーム名.location.href="アドレス";
 }
</script>
<a href="#" onClick="sample()">
_/_/_/_/_/_/_/_/_/_/
の様にAタグ内の「onClick」イベントでsampleと言うファンクションが実行されます。
複数の処理を行う際に便利です。
【Bのフレーム名】【Cのフレーム名】と言う所は各フレーム名に変更して下さい。

>Bに表示されたサブメニューをクリックするとCに次々表示される
はB内で
<a href="アドレス" target="Cのフレーム名">
で可能です。

ですので、BC共に名前を付けておく必要が有ります。

「onMouseover」はリンクにカーソルを乗せた時、
「onClick」はリンクをクリックした時に呼び出されますので、
かぶる事はありません。


長々と書かせて頂きましたが、マトに合った解答で御座いませんでしたらすみません。

この回答への補足

ご教授有難う御座います。
なのに、JavaScriptに関しても全く初心者以上の初心者で、申し訳ない事に記載されている内容が理解出来ませんでした…。
Bはフレームではなくてただの<td>なのですが、それでもこの方法は有効なのでしょうか?

また、現在別ページを呼び出すフレームではなく、インラインフレームを使用しているのですがその場合でも有効なのでしょうか。

補足日時:2005/06/02 23:56
    • good
    • 0

JavaScriptで解決します。


まずは、考え方だけ説明します。
1)AのリンクのOnClickイベントで、
  Bのセル内容の変更と、CのIFRAME
  のURLを変更します。
2)BのリンクのOnClickイベントで、
  CのIFRAMEのURLを変更します。
詳細は、明日にでも。。
サンプルが見つかれば、お知らせします。

この回答への補足

有難う御座います。
あの…一つ問題なのですが、実は書き漏れで(Javaを使うのですか…!)Aのセルの中でOnMouseoverイベントを使ってしまっています。
(同じセル内に
<A onmouseover="menu.innerText='**です。'" onmouseout="menu.innerText=''" href="../**/index.htm" target="iframe">***</A><BR>
<FONT id=menu color=black size="1"></FONT>
のような形です(OnClickイベントとは異なるかも知れませんが…)。
kokorone様の仰るJavaのOnClickイベントとは被らないでしょうか?

補足日時:2005/06/01 00:34
    • good
    • 0

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