javascriptの質問です。フォーム内のセレクトメニューに応じて表示する配列を選び、複数のdivタグ内に表示したいと思っています。getElementByIdでセレクトメニューにIdをつけて呼び出し、selectedIndexでfunction()をonloadという事ですすめています。
複数のdivタグ内に書き出すのにinnerHTMLを使うんだなというところまでは理解しているつもりですが、上手く動きませんので、どなたかご存知の方にご教授願えればと思います。
<html>
<head>
<script type="text/javascript">
window.onLoad = function(){
document.getElementById("selected").onChange = function(){
var planTitle = this.selectedIndex;
var object = document.getElementById("derection");
var TextData = [[],["text","text"],["text","text"]];
for (var i=0; i<TextData[planTitle].length; i++){
document.write(TextData[i]);
}
}
}
</script>
</head>
<body>
<form action="">
<select id="selected">
<option value="title01">title01</option>
<option value="title02">title02</option>
<option value="title03">title03</option>
</select>
<div id="direction"></div>
<div id="direction"></div>
</form>
</body>
</html>
No.1
- 回答日時:
とりあえず根本的な間違いはonLoad→onloadだったりonChange→onchangeだったり
タイポですね。
あとは同じidのタグが2つあったり、document.writeをつかったりはNGです。
配列もなにをしたいのかさっぱりわかりません。
全体的にもうちょっと書き方を工夫しないとかなりまずそうですね。
この回答への補足
ですよね。(汗
なるほどなご指摘ありがとうございます。最初はセレクトメニューに応じて替わるセレクトメニューのソースが本に載っていてそこからわかるところを書き換えていっていたら、混乱してきましたので、こちらで聞いてみることにしたのです。(汗
配列には、selectedに応じてdivタグに入るテキストを入れたいと思っています。
なるほどなご指摘ありがとうございます。
セレクトメニューに応じて替わるセレクトメニューのソースが本に載っていたので、それを元に書き換えていたら混乱してしまっているところです。
javascript自体あまりよくわかりませんが、配列にはセレクトメニューに応じて替わる複数のdivタグにいれるテキストをいれておき、それらをそれぞれのdivタグ内に書き出したいと思っています。
連想配列にしないとダメということでしょうか?
No.2
- 回答日時:
>連想配列にしないとダメということでしょうか?
ご提示のような配列利用の方法でももちろん可能ですが、スクリプトが表示用のテキストばかりになってしまいそうなので、配列を使用しないサンプルを…
考え方を少し変えて、あらかじめHTML内にマークアップしておいた要素を、選択状態に応じて表示/非表示するというものです。(これだと普通にマークアップしておけるので、便利かもと・・・)
指定は、
changer.init(select要素のid, 選択表示対象要素の親id);
みたいな感じ。
* 指定範囲内の子要素のうち、選択されたoptionのvalue値のクラスを有するものだけが表示されます。
* 表示/非表示とする対象は子要素のみで、孫要素以下は対象にしていません。
* 必ず表示しておきたいものは、サンプルのように直接のテキストにするか、または!importantで表示するようにしておけば良いかと思います。
(全角空白は半角に)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html lang="ja">
<head><title>sample</title>
<meta http-equiv="Content-Style-Type" content="text/css">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<style type="text/css">
#fuga, #hoge { padding:10px; margin:10px; border:1px solid #888; }
div.box { font-weight:bold; background-color:#ffd; }
.force { display:block !important; }
</style>
</head>
<body>
<form name="form1" action="" method="">
<select name="select1" id="select1">
<option value="title01">title01</option>
<option value="title02">title02</option>
<option value="title03">title03</option>
</select>
</form>
<div id="hoge">
[hoge]
<div class="title01">hoge内のtitle01用の表示</div>
<div class="title02">hoge内のtitle02用の表示</div>
<div class="title03">hoge内のtitle03用の表示</div>
<div class="force"><p>これはいつも表示される</div>
</div>
<div id="fuga">
<div class="force">[fuga]</div>
この後のリンクが
<a class="title01" href="title01.html">リンク01</a>
<a class="title02" href="title02.html">リンク02</a>
<a class="title03" href="title03.html">リンク03</a>
変わる。
<div class="box title01">リンクはtitle01です</div>
<div class="box title02">title02だよ</div>
<div class="box title03">リンク表示はtitle03でありんす</div>
</div>
<script type="text/javascript">
<!--
// つづく
No.3ベストアンサー
- 回答日時:
// つづき
/*@cc_on@*/
var changer = function(evt){
var sel = evt./*@if(1)srcElement @else@*/target /*@end@*/;
changer.set(sel.value);
}
changer.set = function(val){
if(!val) return;
var pa, ch, i, target = this.target;
var reg = new RegExp("\\b" + val + "\\b");
for(i=0; i<target.length; i++){
if(!(pa=document.getElementById(target[i]))) continue;
ch = pa.firstChild;
while(ch){
if(ch.nodeType==1) ch.style.display = reg.test(ch.className)?"":"none";
ch = ch.nextSibling;
}
}
}
changer.init = function(id, ids){
var sel = document.getElementById(id);
if(!sel || sel.nodeName != "SELECT") return;
this.target = ids.split(",");
this.set(sel.value);
sel. /*@if(1)attachEvent('on' + @else@*/addEventListener(/*@end@*/ 'change', changer, false);
sel = null;
}
// 引数1:select要素のid
// 引数2:選択表示する対象となる要素(ラッパー)のid(カンマ連結)
changer.init("select1", "fuga,hoge");
//-->
</script>
</body>
</html>
すごい!!すごいです。
こんなやりかたがあったのですね。ありがとうございます。
私も、みなさんの質問に答えられるようこれからも勉強していきます。
本当にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript switch文のswitch(n)の部分を複数の値にするか、if文に変えてほしいです。 1 2022/07/27 17:18
- JavaScript セレクトボックスを2つ設けて選択して初めてメッセを表示 1 2022/07/27 12:15
- JavaScript 以前の質問だと、どの条件でも配列が表示されてしまいます。 1 2022/07/09 11:40
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- JavaScript プログラムがうまく動きませんレビューお願いします 1 2022/07/10 05:08
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- JavaScript コードレビューをお願いします。 1 2022/07/16 05:38
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- JavaScript 1日1回引けるJavaScriptおみくじについて 1 2022/12/12 22:28
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
jQuery クリックした後の動き
-
mouseoverで、リンクをずらす。
-
javascriptで複数の表示・非表...
-
エクセルで、日付を入力すると...
-
「ご処理進めて頂きますようお...
-
インタラクティブの反対語は?
-
ImageMagickでgif画像の一部が...
-
UWSC 画像判定と条件分岐について
-
お家デートをしててハグを長い...
-
UWSCを使った画像認証マク...
-
リョウ・・・量?料?
-
VBA エンターキーでイベントに...
-
UWSCでIEが開いているか判定す...
-
uwcs のマクロで画像認識をして...
-
NoxPlayerとUWSCのadbの座標に...
-
switch の範囲指定
-
こんなことてしますか??
-
Excelシート上のマクロを登録し...
-
IQテストの数列
-
UWSCの色判定
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Q&A掲示板の入力フォームに文字...
-
JavascriptでDom XSSの脆弱性対...
-
【JavaScript】検索がヒットし...
-
CSSでreadonlyの機能はあり...
-
JavascriptでXSSの脆弱性への対...
-
formのsubmitを押すとモーダル...
-
確認ダイアログを次からは表示...
-
JavascriptのHTMLクラス表示に...
-
特定の条件のHTML要素を一括で...
-
jQueryでのドラッグアンドドロ...
-
javascriptで複数の表示・非表...
-
jqueryを使ったスムーススクロ...
-
jqueryアコーディオンの上部の...
-
JavaScriptのdiv.style属性の変...
-
2回目以降のページロード時には...
-
javascriptのエラーで質問です。
-
改行をしたいが、<br>と...
-
クリックすると、色が変わるよ...
-
jQueryのCSSで値に変数を使う方法
-
動画の上に広告をオーバーレイ...
おすすめ情報