• 締切済み

javascriptのエラーについて

javascriptのエラーについて。初心者です。 最近、学校でjavascriptの勉強をしていて、セレクトボックスの並び替えを以下のサイトで参考にさせていただきました。http://blog.asial.co.jp/268 そして自分で少しアレンジしてみようと思い、 ・リストを「あ から ん」までに変更 ・リストの増加に伴い、縦スクロールバーの追加 以上の2点を行いました。 そして動かしてみたところ、スクロールバーを下に移動させ、「ら」などを選択し、並び替えを行うと、 スクロールバーが強制的に一番上に移動してしまいます。もちろん表示も「あ」付近を表示しています。 並び替えは正しく行われています。 自分はselectbox.focus()が原因だと考えていますが、 この一文を消すと二番目を一番上と入れ替える際に、リストボックス内にマウスカーソルを乗せないと、並び替えが画面に 反映されないという不具合が起こってしまいます。 実行環境はIEを使用しています。 分かる方がいましたらご回答よろしくお願いします。 ちなみにソースコードなのですが学校のパソコンにあるためここに載せることはできないです。 まことに申し訳ありません。

みんなの回答

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

問題は処理が終わった後、スクロールが上に行っちゃうってことでしょ? 項目<option>を選択すれば、選択した項目が見えるように 自動的にスクロールしてくれるから そうすればいいと思うわ option_list[i].selected = true てすれば選択されるわ i は選択したいインデックスを指定してね

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

処理の最後に、 リストの選択されている項目を 再度選択してあげたらどうかしら?

all_free
質問者

お礼

申し訳ございません。ソースの一部があったため、のせさせていただいたのですが間違えて入力完了を押してしまいました。 なのでこちらで補足させていただきたいと思います。 再度選択をするというのは「↑」押下時の処理の一番最後にサイド選択の処理を入れればいいのでしょうか? わかりづらくて申し訳ありません。 もし分かりましたらご回答お願いします。

all_free
質問者

補足

回答ありがとうございます。 //------------------------------------ // ↑ //------------------------------------ function moveUpElement(selectbox_id){ var selectbox = document.getElementById(selectbox_id); var option_list = selectbox.getElementsByTagName('option'); for (var i = 0; i < option_list.length; i++){//不具合の原因ではない if (option_list[i].selected){//項目が選択されている場合 if (i > 0 && !option_list[i-1].selected){ //if(option_list[1].selected){//追加 //selectbox.focus();//追加 //selectbox.selectedIndex=100;//option_list[i].selected; //} selectbox.insertBefore(option_list[i], option_list[i-1]);// 要素間にノードの挿入 setInputChangeFlag();//データ変更入力をセットする } } } }

関連するQ&A

  • JavaScriptでリストボックスを選択

    リストボックスに約100個の項目があり、いくつかの項目を選択した状態で初期表示します。 これら約100個の項目には、同じものがありません。 (name="list_box" size="10" multiple) 20~30行目くらいのものが選択されていると、初期表示では1~10行目が表示されるので、選択されていることが分かりません。 そこで、初期表示で20~30行目を表示したいと考えています。 例えば20行目の項目がvalue="aaaa"で、onload時に20行目が一番上にスクロールされている状態にしたいのですが、どのようにJavaScriptを書けばよいでしょうか? 動的なデータを想定しているので、"aaaa"は必ずしも20行目とは限りません。 どうにか、value="aaaa"がリストボックスの一番上に選択されている状態を作りたいと考えています。

  • JavaScriptのキーイベント

    JavaScriptのキーイベント いつもお世話になりますm(__)m Javascriptのキーイベントで教えて下さい。 フォーム上に、テキストボックス(id=A)とセレクトボックス1(id=B)と、セレクトボックス2(id=C)があるフォームがあり、フォーム内の項目移動をキーボードで行いたいと思います。 各項目のkeydownイベントでキーコードを取得して、Aの場合 Enter(13)又は→(39)なら、Bへ ←(37)なら、Cへ 移動するようにキーコードを取得して移動するようにしました。 IEだと問題なく動くのですが、Firefoxだと、矢印キーで移動した時に、移動先のセレクトボックスの値が  ←で動いた場合、セレクトボックスの値が1つ前  →で動いた場合、セレクトボックスの値が1つ後 に変わってしまいます。 (フォーカスは問題なく移動先のセレクトボックスにあります) 移動した後(例えばB.focus()の後)に、まだキーイベントが残っていて、Bにフォーカス移動後に、→キーが押されたような状態っぽいのです。 Firefoxの場合、セレクトボックスにフォーカスがある時、キーボードの左右で値を変更できるので、その辺りが原因と思うのですが、移動時に左右矢印キーのイベントを無効(?)にする事はできないのでしょうか? 雑な書き方で申し訳ありませんが、お詳しい方、是非ともご教授下さいm(__)m 宜しくお願い致します。

  • javascriptでの独自スクロールボタン作成

    IEで通常のスクロールバーは非表示にし、javascriptでjQueryを使用せずに、 上下ボタンおよびスクロールバーを作成することは可能でしょうか? また可能な場合、どのような方法で作成できるかご教授いただきたく思います。 この作成にあたってはhtmlの親子関係やテキストボックスを使用しない場合の ボタン作成を想定しています。

  • JavaScriptでのDIV間のスクロール

    JavaScriptの初心者です。 JavaScriptの実装方法について教えてください。 以下のようなhtmlがある場合に、JavaScriptの関数呼び出しによってbox間のスクロールをさせたいです。 例:yyyyyyyのboxで関数を呼ぶと、zzzzzzzzzzのboxまでスクロールする。 <div class="box">xxxxxxxxxxxxxxxxxxxxxxx</div> <div class="box">yyyyyyyyyyyyyyyyyyyyyyy</div> <div class="box">zzzzzzzzzzzzzzzzzzzzzzzzzz</div> class名が同一である場合にこのような処理を行うためには、各boxの座標を取得しておき、現在表示しているboxの上下のtop座標に移動させるような関数を実装すれば良いと考えています。 ですが、どのような実装をすれば良いか、試行錯誤していますがうまくいきません。 どなたかアドバイスをいただけるととてもうれしいです。

  • Javascriptで開いたWindowのスクロール

    <SCRIPT language="JavaScript"><!-- function openWin2() { window.open("http://www.OOOO/hanbai.htm","通信販売法","width=636,height=250,menubar=no,location=no,left=10,top=30") } // --></SCRIPT> <SCRIPT language="JavaScript"><!-- function openWin1() { window.open("http://www.OOOO/souryou.htm","送料について","width=579,height=240,scrollbars=no,location=no,menubar=no,left=10,top=30") } // --></SCRIPT> 上記の文で、「送料について」はスクロールバーがなくて OKなのですが、 「通信販売法」は、スクロールバーを出したいのですが、 上の文では、スクロールバーは出てきません。 (表示サイズで途切れてしまう) どう直せば、スクロールバーが出てきますでしょうか??

  • 「SubmitせずにJavaScriptからCGIを呼び出して結果をH

    「SubmitせずにJavaScriptからCGIを呼び出して結果をHTML上に表示したい」 HTMLファイル上にテキストボックスとそれと対になるラベル(ラベルじゃなくても良いのですが。。)のセットがいくつかあります。 テキストボックスにコードを入力したら、ラベルにそのコードに対応する商品名を表示したいと思っています。 テキストボックスにコードを入力後、フォーカスが離れたら(Onchangeで)JavaScriptでそのコードの値を取得し、そのデータをCGIに渡してサーバにあるDBに接続し、その結果をHTML上のラベルに表示したいと思います。 Sbmitせずにフォーカスが離れた場合に、データをCGIに受け渡し、そのデータを画面遷移しないで、HTML上に表示するのはどのようにすればいいのでしょうか。 また、上記のことをJavaScriptとCGIだけでできるのでしょうか。 教えてください。 よろしくお願い致します。

  • JavaScriptのキーイベントについての質問です。

    JavaScriptのキーイベントについての質問です。 フォーム上にテキストボックス、セレクトボックス、ボタンがあります。 それぞれの項目移動をキーボード(enter)で行いたいのですが、 テキストボックスからセレクトボックスへの移動は、 onkeydownとonblurにより、enter押下にて行えるのですが、 セレクトボックスからボタンへの移動が行えません。 これは可能なのでしょうか? できればセレクトボックスにフォーカスされている時にenter押下で、ボタンを押すようにしたいです。 ブラウザはIEです。 どなたか是非ともご教示お願い致します。

  • スクロールバーの移動量制御【Javascript】

    http://www5.mediagalaxy.co.jp/p-givenchy/skincare/wash/top.html 上のようなページのように、スクロールバーを クリックした時の移動量を制御したいです。 javascriptによる制御だと思いますが、 どなたかわかりやすく教えて頂けませんでしょうか? 宜しくお願い致します。

  • エクセルでリスト選択できるようにしたのですが表示が空白からになってしまいます。。。

    エクセルでリスト選択できるようにしたのですが表示が 一番上の文字から出なく一番下の空白が最初に出てしまいます。 スクロールバーで上にすれば表示されますが 毎回スクロールバーを使うのが手間なので一番上の文字から 表示されるようにしたいです。 またリスト選択が8個までしか表示できずそれ以上は スクロールバーになってしまうのですが 表示をふやすことは出来ますでしょうか??><;

  • スクロールバーの位置指定

    HTMLでリストを作成し、表示した時に、スクロールバーの位置を一番下に表示したいのですが、スタイルシートかJavaScriptでスクロールバーの位置を指定できないでしょうか? いろいろ探してみたのですが、見つからず、質問しましたので、よろしくお願いします。

専門家に質問してみよう