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