• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Javascriptで現在のページ番号をアクティブな状態にしたい)

JavaScriptで現在のページ番号をアクティブな状態にしたい

このQ&Aのポイント
  • 現在、PHPで動的なページリンクを生成していますが、リストの上部と下部に連動させて動くようにしたいです。
  • ページリンクを生成する部分は外部ファイルにしており、HTMLの特定の箇所にインクルードしています。
  • 現在のページ番号を強調表示し、ページが開いた直後は1のリンクがアクティブになるようにしたいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.1

phpはよく知りませんけれど… 基本的にidが重複することは不可です。(エラーにならないかも知れませんが) 一つしかないはずのものなので、getElementByIdで複数の要素を取得することはできません。 質問を読む限り、わざわざjavascriptを使用しなくても(スクリプトオフのユーザもいることですし)、phpで出力する時にその部分だけリンクをはずして  style="color = '#333333'; fontWeight = 'bold';" のような設定をしてあげるようにしたほうが良いのでは? あるいは、該当ページの部分だけ class="gray" みたいに指定しておいて、CSSで .gray { text-decoration: one; color = '#333333'; fontWeight = 'bold'; } などでも良いですね。(これもスクリプト不要) どうしてもDOM操作でやりたいのなら、class="pageLink"のDIVを取得してそのなかから該当するページを探してあげればよろしいかと… var i, j, a, div = document.getElementsByTagName('DIV'); for (i=0; i<div.length; i++) {   if (div[i].className == 'pageLink') {    a = div[i].getElementsByTagName('A');    for (j=0; j<a.length; j++) {     if (a[j].href.replace(/^.+?\?/,'') == 'p_no=' + no) a[j].className = 'gray';    }   } }

jamaica88
質問者

お礼

fujillin様 早速のご回答ありがとう御座いました! アドバイスを元に自分なりにスクリプトを書いてみたところ 無事実現する事ができました。 ========================================================== function nowPage(no) {  var contents = document.getElementById("blkList");  var a = contents.getElementsByTagName("a");  for(var i=0; i<a.length; i++) {   var childs = a[i].childNodes;   for(var n=0; n<childs.length; n++) {    var val = a[i].childNodes[n].nodeValue;    if(val == no) {     a[i].style.textDecoration = "none";     a[i].style.fontWeight = "bold";     a[i].style.color = "#333";    }   }  } } ========================================================== クラス名は使わず、親である<div>(blkList)要素からa要素を拾い、 さらにその子要素の値を、引数であるページ番号と比較して 同じならスタイルを変更するといった手法を取りました。 これを機にもっとDOMを勉強しようと思います。 この度は本当にありがとう御座いました。

その他の回答 (1)

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.2

#1です。 CSSの部分の記載がメチャクチャになってました。 .gray { text-decoration: none; color: #333333; font-weight: bold; }

関連するQ&A