- PR -

選択リストの複数選択制御(javascript)

1
投稿者投稿内容
NORIX
常連さん
会議室デビュー日: 2004/08/31
投稿数: 30
投稿日時: 2005-03-09 15:18
おせわになってます。

<select multiple>で複数選択のリストを作成したのですが、
選択するのにalt、shiftを使わずにシングルクリックで選択/選択解除ができるようにしようと考えています。

onClick時には選択項目は非選択状態(selected==false)で拾えないので
、onChangeで選択状態の切り替えを制御しているのですが、やはり一度クリックで項目の選択をクリアしてから選択しなおしているのでどうしてもちらついてしまいます。
ちょっとこのままでは見苦しいのでちらつきを無くしたいのですが、何かよい方法はないでしょうか。ご存知の方いらっしゃいましたら教えてください。
よろしくお願いいたします。

//javascript
var azc_listitem_dep = new Array();
function clickList(selOBJ){
if (azc_listitem_dep.length == 0)
{
for (i = 0 ; i < selOBJ.options.length ; i++)
{
azc_listitem_dep[i] = false;
}
}
azc_listitem_dep[selOBJ.selectedIndex] = !azc_listitem_dep[selOBJ.selectedIndex];

for (i = 0 ; i < azc_listitem_dep.length ; i++)
{
selOBJ.options[i].selected = azc_listitem_dep[i];
}
}
//html
<SELECT multiple name = 'selectlist' size = '10' onChange='clickList(this)'>
taro
ぬし
会議室デビュー日: 2003/10/20
投稿数: 316
投稿日時: 2005-03-09 16:24
ちらつきさえなくなればということでしたらこういうのはいかがでしょうか。。

//javascript
for (i = 0 ; i < azc_listitem_dep.length ; i++)
{
selOBJ.options[i].selected = azc_listitem_dep[i];
if(selOBJ.options[i].selected){
document.all["op"+i].style.background = '#000080';
document.all["op"+i].style.color = '#FFFFFF';
}
}
}

//html
<SELECT multiple name = 'selectlist' size = '10' onChange='clickList(this)'>
<OPTION id="op0">op0</OPTION>
<OPTION id="op1">op1</OPTION>
</SELECT>
# 誤字訂正。

[ メッセージ編集済み 編集者: taro 編集日時 2005-03-09 16:25 ]
NORIX
常連さん
会議室デビュー日: 2004/08/31
投稿数: 30
投稿日時: 2005-03-09 17:37
ありがとうございます〜!!
早速やってみました。ちらつかなくなりました!
でもリストの選択時の背景色がユーザーによってまちまちなので、選択時のデフォルトの色とこちら側の指定色が微妙にちがっちゃったりしますね。
それはこちら側の指定色(#000080)に変えてしまうやり方でやるかんじですかね。
もしくはユーザーのデフォルト指定色を取得することって可能なのかなぁ。
1

スキルアップ/キャリアアップ(JOB@IT)