• 締切済み

リンク先をジャバスクリプトで別ウィンドウで見せるとき他のリンクの色も変わってしまう II

リンク先を別ウィンドウで飛ばすため、同じページにある他のリンクも <a href="#">AAAA</a>(これはポインタを手のマークに変えてリンクをわかり易くするためです) <a href="#">BBBB</a> のように指定していますが、これだと一度クリックしてしまうと 全てのリンクが訪問後の色に変わってしまいます。 この問題はどう改善できるのでしょうか? 前回質問のアドバイスを元に記述してみたのですが↓ <a href="javascript:function void(0)" onClick="window.open('../htm/1.htm','','scrollbars=yes,width=700,height=700')">1234</a> <a href="javascript:function void(0)" onClick="window.open('../htm/2.htm','','scrollbars=yes,width=700,height=700')">5678</a> やはりクリックしてみるとリンク全てが訪問後の色に変わってしまいました、

みんなの回答

  • pick52
  • ベストアンサー率35% (166/466)
回答No.3

もう、いっそのこと <a href="javascript:void(0);" style="color: blue;" onclick="window.open('../htm/1.htm','','scrollbars=yes,width=700,height=700')">1234</a> みたいな感じにしてはどうでしょうか。 これなら、クリックしてもリンクの色は変わりません。 なお、本来はアンカータグのhref属性にjavascript:スキームを 使用するのは非推奨なのですが、この辺は仕方ないところです。 あと、よく使用されている href="#" は悪習慣であり、使っては いけません。 http://blog.webcreativepark.net/2007/08/01-135601.html

kendoo
質問者

お礼

皆様アドバイスしていただき大変勉強になっています! 一番簡単そうな方法の <a href="javascript:void(0);" style="color: blue;" onclick="window.open('../htm/1.htm','','scrollbars=yes,width=700,height=700')">1234</a> <a href="javascript:void(1);" style="color: blue;" onclick="window.open('../htm/2.htm','','scrollbars=yes,width=700,height=700')">5678</a> といった感じで記述してみようと思います。 ステータスバーに”ページにエラーが発生しました”と出るのがとても気になってしまいますが、、 href="#" はダメなのですね! 今までずっと使ってきたので修正が大変になりそうです。 ありがとうございました!!!

  • sample_
  • ベストアンサー率76% (20/26)
回答No.2

これならいかが? ・html<body>内 -- <body> <span id="aaa">google</span><br /> <span id="bbb">google</span><br /> <span id="ccc">google</span><br /> </body> -- ・css -- span{ color: blue; text-decoration:underline; cursor : pointer; } -- ・javascript -- var dom = {}; dom.addEventListener = function(node, type, func, phase) { if(!node){return false}; if(!phase){phase = false}; if(node.addEventListener) { node.addEventListener(type, func, phase); } else if(node.attachEvent) { node.attachEvent('on'+type, func); } else { return false; } return true; }; dom.addEventListener(window,'load',default_set); function default_set(){ dom.addEventListener(document.getElementById("aaa"),'click',link); dom.addEventListener(document.getElementById("bbb"),'click',link); dom.addEventListener(document.getElementById("ccc"),'click',link); } function link(evt){ if(document.uniqueID){ var id = window.event.srcElement.id; document.getElementById(id).style.color = "#840084"; }else{ var id = evt.target.id; document.getElementById(id).setAttribute("style", "color:#840084"); } window.open("http://www.google.co.jp"); } -- ページを閉じても訪問済みの箇所を再現させたいときは、cookieを活用してもらえばOKです。

回答No.1

アンカーのリンク先が全く同じなら一蓮托生で訪問済みになるのが当 たり前だと、http://oshiete1.goo.ne.jp/qa4443751.htmlで教えても らいましたよね。今度もそれぞれのアンカーでhref属性の値が全く同 じなんですから、最初のリンクの色が変わるなら次のリンクも一蓮托 生で色が変わるのが当然です。 で、アイデアですが、void関数に与えるパラメータを0だけじゃなく てアンカーごとにいろいろ変えてみるとどうなるでしょう。つまり、 <a href="javascript:function void(0)" onClick="window.open ('1.html','','scrollbars=yes,width=700,height=700')">1234</a> <a href="javascript:function void(1)" onClick="window.open ('2.html','','scrollbars=yes,width=700,height=700')">5678</a> 私の環境ではhref属性の値がjavascriptなアンカーでは何回実行して も訪問済色にはならないので確認は不可能ですが。別物として認識す る確率は高いと思いますし、voidにどんなパラメータを与えても何も しないことに変わりはないので無害なはずです。

関連するQ&A

専門家に質問してみよう