• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:body onload 自動フォーカス)

次ページ遷移時のテキストフォーカスとスクロールについて

このQ&Aのポイント
  • 次ページ遷移時にテキストにフォーカスを当て、その場所までスクロールする方法についてご質問です。
  • name属性にハイフンが含まれる場合、フォーカスの実行が失敗するため、他の名前を使用する方法を探しています。
  • また、テキストにフォーカスした状態でその場所までスクロールすることは可能でしょうか。

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

  • ベストアンサー
  • askaaska
  • ベストアンサー率35% (1455/4149)
回答No.5

で、offsetTopの値は確認できたの? scrollの直前に alertで出力してみればいいと思うわ ちなみに、そのテキストボックスより下には 十分な空きスペースがあるのよね? 無い場合あたりまえだけど一番上にはいかないからね せいぜい真ん中止まりよ

jipang5054
質問者

お礼

ご連絡が遅くなりました。 今回は上記の方法ではなく、 window.location.hash=group; (groupは変数) を利用して、id要素へ飛ばす方法に変えました。 今回の案件ではとても勉強になりました。 大変ありがとうございました。

jipang5054
質問者

補足

ご連絡ありがとうございます。 アラートを出してみました。 function scroll_op(goods){  document.getElementsByName(goods)[0].focus();  document.getElementsByName(goods)[0].style.backgroundColor="yellow";  alert(document.getElementsByName(goods)[0].offsetTop);  window.scroll(0,document.getElementsByName(goods)[0].offsetTop); } すると、chromeでは「24」、IEでは「25」がでました。 goodsの引数値を変えても毎回同じアラートになります。 又、下には十分な空きスペースがあります。 記述に不備があるのでしょうか。

すると、全ての回答が全文表示されます。

その他の回答 (4)

  • askaaska
  • ベストアンサー率35% (1455/4149)
回答No.4

まず document.getElementsByName(goods)[0].offsetTop で値が取れているかどうか確認が必要ね ブラウザによって取れたり取れなかったりするから もしjQueryを使えるなら それを使ってtop値を取る方が確実かも

jipang5054
質問者

補足

ご教授ありがとうございます。 jQueryは初めてでどうすればよいか見当もつきません。 甘えてばかりで申し訳ございませんが、 top値を取る方法も教えていただけないでしょうか。 又、使用ブラウザは「GoogleChrom」ですが、IEの11だと構築した関数ではスクロールが一番下になってしまいます。 こちらは document.getElementsByName(goods)[0].offsetTop がうまく作動すれば、解決されますでしょうか。 何から何まで申し訳ございません。 納期が迫ってきてしまっていることもございますので、 本来であれば勉強なり調べるなりすることが筋でありますが、 ご協力を頂戴できればと思います。 何卒宜しくお願い申し上げます。

すると、全ての回答が全文表示されます。
  • askaaska
  • ベストアンサー率35% (1455/4149)
回答No.3

関数を作って その中に処理を書いて その関数をonloadで呼べばいいわ

jipang5054
質問者

補足

ご連絡遅くなり申し訳ございません。 ご教授いただきました通り、頑張って関数を作成してみました。 function scroll_op(goods){  document.getElementsByName(goods)[0].focus();  document.getElementsByName(goods)[0].style.backgroundColor="yellow";  window.scroll(0,document.getElementsByName(goods)[0].offsetTop); } 上記の関数をPHP上で取得した引数を入れて作動しました。 最後に1点またまたご質問です。 上記関数ですと、画面の1番上に行く(window.scroll)が作動しません。 色々と試してみているのですが、不備をご指摘いただければありがたいです。 何卒宜しくお願い申し上げます。

すると、全ての回答が全文表示されます。
  • askaaska
  • ベストアンサー率35% (1455/4149)
回答No.2

うまく言ってよかったの > 一番上に window.scroll(0,document.getElementsByName('fi-el-d1')[0].offsetTop); こんな風にすればその場所までスクロールするわよ > 背景色 document.getElementsByName('fi-el-d1')[0].style.backgroundColor="red"; こんな風にすれば背景色が赤くなるわ

jipang5054
質問者

補足

ご連絡が遅くなりました。 またまた早速のご連絡ありがとうございます。 教えていただいた方法で双方共実行の確認ができませんでした。 おそらく私がJavaScript素人の為のミスであると思われます。 今回の実行したいことは、 1)指定テキストまでスクロール 2)指定テキスト背景色の色付け 3)指定テキストフォーカス です。 こちらを <body onload=""> 内ですべて実行する方法はありませんでしょうか。 実際はPHPで指定テキストを選び、echoでbodyタグを出力しております。 こんな感じです。 <php? if(substr($aaa,0,7) == "1234567"){  echo("<body onload=\"document.getElementsByName('fi-el-d1')[0].focus();\">"); }else if(substr($aaa,0,7) == "2345678"){ echo("<body onload=\"document.getElementsByName('fi-el-d2')[0].focus();\">"); } ?> 上記のコードは成功しました。 (一番最初に教えていただいた内容です。) あまりスマートな方法ではありませんが、 何卒宜しくお願い申し上げます。

すると、全ての回答が全文表示されます。
  • askaaska
  • ベストアンサー率35% (1455/4149)
回答No.1

1) document.getElementsByName('fi-el-d1')[0].focus() こんな風にする 2) フォーカスを当てたら 勝手に画面に入るようにスクロールするはずよ

jipang5054
質問者

補足

早速のご連絡大変ありがとうございました。 1)教えていただいた通りこちらでバッチリでした。 2)画面スクロールもうまくいきました。 ありがとうございました。 続けて質問しても宜しいでしょうか。 2)のスクロールですが、フォーカスしたテキストが画面の1番上に くるようにできたら尚良いかなと思っております。 良い方法はございませんでしょうか。 こちらはできたらで結構です。 後、続けての動作ですが、フォーカスしたテキストの背景色も同時に 変えることはできますでしょうか。 PHPで書き込んでいけば可能なのですが、シンプルにできる方法があれば 教えてください。 何卒宜しくお願い申し上げます。

すると、全ての回答が全文表示されます。

関連するQ&A