セレクトボックスの操作について
3つのセレクトボックスのうち、どれかを変更すると同じテキストのものに
残りの2つのセレクトボックスを変更したいと思っております。
同じテキストが無ければ<option value="">----------</option>をcheckedにしたいと
考えているのですが、どなたかご教授いただければと思います。
[変更したいhtml]
<select name="house_kouzou_a" id="house_kouzou_a" class="a">
<option value="">----------</option>
<option value="1">木造</option>
<option value="2">鉄筋</option>
</select>
<select name="house_kouzou_b" id="house_kouzou_b" class="b">
<option value="">----------</option>
<option value="1">木造</option>
<option value="2">鉄筋</option>
</select>
<select name="house_kouzou_c" id="house_kouzou_c" class="c">
<option value="">----------</option>
<option value="1">木造</option>
<option value="3">鉄筋</option>
<option value="4">その他</option>
</select>
No.5ベストアンサー
- 回答日時:
ヘッダーバージョン。
<script type="text/javascript">
var sellist = new Array();
function selctrl0(ids){
for(var i=0;ids[i];i++) {
sellist.push(document.getElementById(ids[i]));
sellist[i].onchange=new Function("selctrl1(this)");
}
}
function selctrl1(O){
var seltext = O.options[O.selectedIndex].text;
for(var i=0;sellist[i];i++){
if(sellist[i] == O) continue;
var flag = false;
for(var j=0;sellist[i].options[j];j++) {
flag |= sellist[i].options[j].selected = (seltext == sellist[i].options[j].text);
}
if(! flag) sellist[i].options[0].selected = true;
}
}
</script>
</head>
<body onload="selctrl0(['house_kouzou_a','house_kouzou_b','house_kouzou_c'])">
No.4
- 回答日時:
サンプル
<select name="house_kouzou_a" id="house_kouzou_a" class="a">
<option value="">----------</option>
<option value="1">木造</option>
<option value="2">鉄筋</option>
</select>
<select name="house_kouzou_b" id="house_kouzou_b" class="b">
<option value="">----------</option>
<option value="1">木造</option>
<option value="2">鉄筋</option>
</select>
<select name="house_kouzou_c" id="house_kouzou_c" class="c">
<option value="">----------</option>
<option value="1">木造</option>
<option value="3">鉄筋</option>
<option value="4">その他</option>
</select>
<!-- このscriptはヘッダ部じゃなくてselectの後ろ、</body>より前に置く -->
<script type="text/javascript">
var sellist = new Array(document.getElementById('house_kouzou_a'),
document.getElementById('house_kouzou_b'),
document.getElementById('house_kouzou_c'));
for(var i=0;sellist[i];i++) sellist[i].onchange=new Function("selctrl(this)");
function selctrl(O){
var seltext = O.options[O.selectedIndex].text;
for(var i=0;sellist[i];i++){
if(sellist[i] == O) continue;
var flag = false;
for(var j=0;sellist[i].options[j];j++) {
flag |= (sellist[i].options[j].selected = (seltext == sellist[i].options[j].text));
}
if(! flag) sellist[i].options[0].selected = true;
}
}
</script>
この回答への補足
ご回答ありがとうございます。
思い通りの動作なのですが、javascriptをhead部分に入れる事は
可能でしょうか?
わがままを言って申し訳ございません。
No.3
- 回答日時:
そもそも3つのselectが・・・こうぞうをかえるべき。
じょういに、しもじもが、したがっていくせってい。いやなら pFlag=true; に
ぜんかくくうはくは、すべてはんかくに。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<title>TEST</title>
<body>
<form action="#">
<p>
<select name="house_kouzou_a" id="house_kouzou_a" class="a" onchange="hoge( this )">
<option value="" selected>-</option>
<option value="1">木造</option>
<option value="2">鉄筋</option>
</select>
<select name="house_kouzou_b" id="house_kouzou_b" class="b" onchange="hoge( this )">
<option value="" selected>-</option>
<option value="1">木造</option>
<option value="2">鉄筋</option>
</select>
<select name="house_kouzou_c" id="house_kouzou_c" class="c" onchange="hoge( this )">
<option value="" selected>-</option>
<option value="1">木造</option>
<option value="3">鉄筋</option>
<option value="4">その他</option>
</select>
</p>
</form>
<script type="text/javascript">
var getSelectText = function ( select ) {
var options = select.options;
var text = options[ select.selectedIndex ].text;
return text;
};
var setSelectByText = function ( select, text ) {
var options = select.options;
var option;
var count = 0;
while( option = options[ count++ ] ) {
option.selected = option.text == text;
}
};
var setSomeText = function ( ) {
if( !arguments.length ) return null;
var count = 0;
var selects = [ ];
var name, select;
while( name = arguments[ count++ ] ) {
select = document.forms[0].elements[ name ];
if( 'SELECT' === select.nodeName )
selects.push( select );
}
return function ( select ) {
var count = 0;
var target;
var text = getSelectText( select );
var pFlag = false;
while( target = selects[ count++ ] ) {
if( select == target ) {
pFlag = true;
} else {
pFlag && setSelectByText( target, text );
}
}
};
};
var hoge = setSomeText( 'house_kouzou_a', 'house_kouzou_b', 'house_kouzou_c' );
</script>
No.2
- 回答日時:
質問文に忠実に作ってみました。
「一致しない」は一致しないパターンの確認用です。
<script type="text/javascript">
<!--
var o,str,bn,cn,i;
function selectOperate(){
o = document.form1;
str = o.house_kouzou_a.options[o.house_kouzou_a.selectedIndex].innerHTML;
//2番目:一致するものを探す
bn = 0;
for(i in o.house_kouzou_b.options ){
if(o.house_kouzou_b.options[i].innerHTML == str){
bn = i;
break;
}
}
//一致したものがあればその番号。しなければ0番目。
o.house_kouzou_b.options[bn].selected = true;
//3番目:一致するものを探す
cn = 0;
for( i in o.house_kouzou_c.options ){
if(o.house_kouzou_c.options[i].innerHTML == str){
cn = i;
break;
}
}
//一致したものがあればその番号。しなければ0番目。
o.house_kouzou_c.options[cn].selected = true;
}
//-->
</script>
</head>
<body>
<form action="#" name="form1" id="form1">
<select name="house_kouzou_a" id="house_kouzou_a" class="a" onchange="selectOperate()">
<option value="">----------</option>
<option value="1">木造</option>
<option value="2">鉄筋</option>
<option value="3">一致しない</option>
</select>
<select name="house_kouzou_b" id="house_kouzou_b" class="b">
<option value="">----------</option>
<option value="1">木造</option>
<option value="2">鉄筋</option>
</select>
<select name="house_kouzou_c" id="house_kouzou_c" class="c">
<option value="">----------</option>
<option value="1">木造</option>
<option value="3">鉄筋</option>
<option value="4">その他</option>
</select>
</form>
</body>
</html>
この回答への補足
ご回答ありがとうございます。
上記のスクリプトだとhouse_kouzou_aしか操作できないと思うのですが・・
house_kouzou_b,house_kouzou_cどれからも操作できるようにしたいと思っております。
No.1
- 回答日時:
同じ名前なら、valueで示す番号を揃えた方が良いと思います。
3つめの鉄筋が3になっていますが2にして統一します。その他は、後で項目を追加したときのことを考えて9にして、何もない場合も明示的に判りやすく0にすると良いでしょう。
とりあえず、インデックス番号を使った単純な方法を書いておきます。
house_kouzou_aの制御(フォームの名前は不明なのでform1とする)
<select name="house_kouzou_a" id="house_kouzou_a" class="a" onChange="changeSelect()">
<script>
function changeSelect()
{
//aのインデックス番号を取得(何番目のメニューか)
get = document.form1.house_kouzou_a.selectedIndex;
//bとcを同じインデックス番号に設定
document.form1.house_kouzou_b[get].selected = true;
document.form1.house_kouzou_c[get].selected = true;
}
</script>
cにはその他があるので、その場合は処理をしないようにif文で制御します。
参考URL:http://www.shurey.com/Soft/JS/form/index.html
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript JavascriptからSQLへ繋ぎ方が分からない 3 2022/07/07 00:27
- JavaScript console.logがどうしても2つ機能しないのでアドバイスをくださいお願いします 2 2022/07/07 22:13
- JavaScript 以前の質問だと、どの条件でも配列が表示されてしまいます。 1 2022/07/09 11:40
- JavaScript 中百舌鳥駅と深井駅を入れ替えて選択しても同じ挙動にしたいです。 2 2022/06/24 18:45
- JavaScript セレクトボックスを2つ選択してメッセージなどを表示するには。~運賃検索プログラムを完成させたい~ 1 2022/07/22 11:10
- JavaScript セレクトボックスで配列を呼び出したい。 1 2022/07/08 20:14
- JavaScript 2段階プルダウンで1段階目の選択を終えた後に選択ボックスを見えなくしたい 2 2022/07/05 21:58
- JavaScript 電車の運賃を出すプログラムを作っています。 2 2022/06/22 09:36
- JavaScript 1度きりではなく、繰り返し、挙動が変わるようにしていただきたいです。 1 2022/07/03 15:50
- JavaScript セレクトを全て選択されていないと、文字によるエラーメッセージを表示させるコードを調べています 2 2023/06/22 15:48
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・ハマっている「お菓子」を教えて!
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
javascriptでセレクトボックス...
-
selectを変更不可にしたい
-
動的にtextareaとselectを追加...
-
まったく同じ<select>フォーム...
-
同じ名前のセレクトがある場合...
-
<select> をmultiple にしてい...
-
Javascriptの動的リスト作成に...
-
プルダウンのoptionの表示・非...
-
JAVASCRIPTのプルダウンメニュ...
-
C#(csファイル)とjavascriptと...
-
特定の条件の時だけセレクトボ...
-
<input>の選択肢をプルダウンメ...
-
return trueとreturn falseの用...
-
slickのレスポンシブ > center...
-
hiddenのvalueの値を変えたい
-
onclickをEnterキーでも行いたい
-
onClick="this.form.submit
-
文字列型をDOM型に変換
-
アンダーバーのname値は取得で...
-
チェックボックス付きのテーブ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プルダウン選択を変更すると、...
-
javascriptでセレクトボックス...
-
Selectボックスの一覧表示方法
-
<input>の選択肢をプルダウンメ...
-
selectを変更不可にしたい
-
全てのselect要素をデフォルト...
-
JavaScriptで<select>の<option...
-
select要素のvalueを配列で取得...
-
【javascript】連想配列からセ...
-
複数のプルダウンを1つにまとめ...
-
VBScriptでHTMLのセレクトボッ...
-
ラジオボタンとプルダウンを連...
-
<select> をmultiple にしてい...
-
同じ名前のセレクトがある場合...
-
javascript:データを日本語で...
-
webページの一部のみの更新につ...
-
スマホのフォームでのselect複...
-
ラジオボタンの選択に応じてプ...
-
プルダウンの値によって活性・...
-
selectが変更されたらnameを指...
おすすめ情報