プロが教えるわが家の防犯対策術!

いつもお世話になっております。

login.jsp
A.jsp
B.jsp
C.jsp
という画面があり、ログイン画面以外の画面上部に以下のようにリンクを張り付けております。

<a id="AH" href="A.jsp" onClick="Aheader()">A画面へ</a>
<a id="BH" href="B.jsp" onClick="Bheader()">B画面へ</a>
<a id="CH" href="C.jsp" onClick="Cheader()">C画面へ</a>

ログイン画面でログインに成功すると、A.jspへ遷移します。
(1)A画面へ遷移した後、『A画面へ』のリンクを無効化
『B画面へ』をクリックすると、
(2)B.jspへ遷移し、『A画面へ』のリンクを有効化・『B画面へ』のリンクを無効化
(C画面も(2)と同じ仕組み)

---------Script---------
window.onload = function()
{
var element = document.getElementById("AH");
element.removeAttribute("href");
}
function Aheader()
{
var element = document.getElementById("AH");
element.removeAttribute("href");
}
function Bheader()
{
var element = document.getElementById("BH");
element.removeAttribute("href");
}
function Cheader()
{
var element = document.getElementById("CH");
element.removeAttribute("href");
}
------------------------------------
これを実行すると、確かに無効化はされますが、有効化が出来ていない状態です。(hrefが削除されたままなので・・・)
ですので、setAttribute を使えば出来そうだと考えたのですが、うまく動きませんでした。

ぜひ皆様の知恵をお借りしたく質問させていただきました。
よろしくお願いいたします。

A 回答 (4件)

ヘッダーを別ファイルで実装するなら、


sessionにどの画面を読み込んでいるかを保存し、
場合分けしてはどうですか?

A画面のソース

A画面へ
<a id="BH" href="B.jsp" onClick="Bheader()">B画面へ</a>
<a id="CH" href="C.jsp" onClick="Cheader()">C画面へ</a>

B画面のソース

<a id="AH" href="A.jsp" onClick="Aheader()">A画面へ</a>
B画面へ
<a id="CH" href="C.jsp" onClick="Cheader()">C画面へ</a>

のような感じです。
実際にはjavascriptでsessionは使えないから、onclick部分は
それ用に修正がいりますけど。

includeでsessionが使えたかどうか、うろ覚えですが、
無理な場合は、server.excute何かも使えたのではないかと・・

#2さんが言われてるように
javascriptよりかは簡単だと思いますが・・
    • good
    • 0
この回答へのお礼

chochobizo様

>リンクを省いた状態でHTML出力するか
は、そういう意味だったのですね。
確かにその方法が簡単に済みますよね;;
一応includeするようにと言われておりますので、sessionを使うという案でやってみます(*^^*)

大変お手数をお掛けいたしまして、申し訳ございませんでした。
そして、ありがとうございました。

お礼日時:2009/12/24 16:23

#2です。



どうせA.jsp、B.jsp、C.jspの3つに分かれていて、高々そのくらいの処理ならばわざわざinculudeしなくても、前半の方法で直接2行ずつ記入したほうが簡単そうな気がしますが?

どうしてもincludeで処理したければ、後半の方法で可能では?
(jsp自体をよく知らないけど)

しつこいようですが、せっかくjspにしているのだから、その部分に関してはjavascriptは不要でしょう。(前半の方法だとjspの必要もないけれど…)
    • good
    • 0
この回答へのお礼

fujillin様

chochobizo様にもお伝えしたのですが、
一応includeするようにと言われておりますので、今回は直接2行ずつではなくsessionで判断することに致しました。

ありがとうございました(*^^*)

お礼日時:2009/12/24 16:25

よく理解できてないけれど…


 A.jsp → BとCのリンクを表示
 B.jsp → AとCのリンクを表示
 C.jsp → AとBのリンクを表示  するのだと解釈しました。

結果が固定で、ファイルが分かれているのなら、#1様が既に回答されているように、javascriptの必要もありません。
それぞれの出力するHTMLソースを修正するだけでよろしいかと。

ABC.jspみたいな一つのファイルで3個分を兼ねるのであれば、必要なリンクだけ出力することが必要になるかも知れませんが、その場合も、javascriptでやるより、サーバサイドで出力し分けるのがよろしいかと。
(何のためにjspにしているのかわからない)

この回答への補足

fujillin様

ご回答ありがとうございます。

私の説明不足で申し訳ございません。

<a id="AH" href="A.jsp" onClick="Aheader()">A画面へ</a>
<a id="BH" href="B.jsp" onClick="Bheader()">B画面へ</a>
<a id="CH" href="C.jsp" onClick="Cheader()">C画面へ</a>
これは各画面の共通ヘッダーとして利用するため、
この3つのリンクだけを記述したjsp(仮にheader.jspとする)を作成しており、header.jspをA,B,Cの各jsp上部でincludeしております。
ですので、この3つのリンクはA,B,Cの全部の画面の上部に表示されています。

『A画面へ』をクリックしA画面を開いたら、
現在A画面にいることを示すために、A.jspのリンクを無効化したいという狙いでございます。
他の画面も同様です。

この様な説明で伝わりますでしょうか?
説明が下手で申し訳ございません。
ご理解いただけたようでしたら、是非ご指導お願いいたします。

補足日時:2009/12/24 13:16
    • good
    • 0

サーバサイドで、リンクを省いた状態でHTML出力するか


A.jsp,B.jsp,C.jspとそれぞれにファイルが分かれているので、
それぞれのHTMLソースの該当個所のリンクを省く。

この回答への補足

chochobizo様

ご回答ありがとうございます。
>リンクを省いた状態でHTML出力するか
removeAttribute("href")のことでしょうか?

>それぞれのHTMLソースの該当個所のリンクを省く。
これは、
A画面にいる時には、『A画面へ』を表示すらしないようにするということでしょうか?

お手数ですが、よろしくお願いいたします。

補足日時:2009/12/24 11:52
    • good
    • 0

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