• 締切済み

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