プルダウンメニューで選択し、決定ボタンを押すと表示

[新着] Webテンプレートを仮オープンしました



0   名前: ほたる : 2007/04/25(水) 11:52  ID:QyqCBhYH sub-Ds
プルダウンメニューで選択し、決定ボタンを押すと
メニューの上のスペースにその内容を表示するにはどうすればいいですか?
(プルダウン、ドロップダウン、画像、表示…などで検索してみましたが分かりません)
よろしくお願いします。

1   名前: 某制作 : 2007/04/25(水) 11:52  ID:gFY2524F sub-Q5
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=shift_jis" />
<title>無題ドキュメント</title>
<style type="text/css">
#answer {
margin:0;
padding:0;
padding-top:1em;
text-align:center;
height:30px;
width:150px;
border:dotted 1px black;
}
</style>
<script type="text/javascript">
function pickUp(){
document.getElementById("answer").innerHTML = document.forms[0].elements["list"].value;
}
</script>
</head>
<body>
<div id="answer"></div>
<form>
<select name="list">
<option value="HTML" selected="selected">HTML</option>
<option value="CSS">CSS</option>
<option value="Javascript">Javascript</option>
<option value="Perl">Perl</option>
</select>
<input type="button" value="決定" onclick="pickUp();" />
</form>
</body>
</html>


こんなのはどうでしょうか?
かなり簡略化してますが
宜しければご利用ください。

2   名前: カヅサツ ◆ThCi95HEzw : 2007/04/25(水) 11:52  [URL]  ID:O5hEMlpW sub-r2
> プルダウンメニューで選択し、決定ボタンを押すと
> メニューの上のスペースにその内容を表示するにはどうすればいいですか?

その内容とは、option要素の内容とか value属性値とか、そのあたりで良いでしょうか。

可能ならcgiなどのサーバサイドスクリプトでやる方が良いのですが、まずご利用のWWWサーバが、いわゆる自作cgiなどを設置可能かどうか調べる必要があります。

あるいは、JavaScriptなどのクライアントサイドスクリプトでやる手がありますが、この場合、読み手の環境が対応していなかったり、あるいは無視する環境の場合、どうなって欲しいのか考える必要があります(たとえばそういう環境の人がアクセスした場合、メニューを出さないとか)。

3   名前: ほたる : 2007/04/25(水) 11:52  ID:QyqCBhYH sub-Ds
>某制作様
参考にさせていただいて勉強してみます。
有難うゴザイマシタ!

>カヅサツ様
スミマセン。まだ勉強不足で難しい事が分かりません。
具体的には、ブログを始めようと思ってるんですが、
ブログパーツを切り替えて表示出来るようにしたいと思っているのです。

4   名前: カヅサツ ◆ThCi95HEzw : 2007/04/25(水) 11:52  [URL]  ID:O5hEMlpW sub-r2
>>3

私が >>2 で確認したかったのは、「読み手の環境を選ばないけど利用しているサーバによっては設置できない」方が良いのか、「どんなサーバでも関係ないけど、読み手の環境によっては無理」な方が良いのかどちらでしょうか。ということです。

例えば、>>1 は後者です。
そして、読み手の環境が対応していなかったり、あるいは無視する環境の場合、決定ボタンを押しても何もおきません。
あるいは、そもそもそういう環境ではボタンを出さないとか、いろいろな手があります。

5   名前: カヅサツ ◆ThCi95HEzw : 2007/04/25(水) 11:52  [URL]  ID:O5hEMlpW sub-r2
あー、ブログというのを読み落としていました。
ならば、普通は前者は無理ですねぇ。

6   名前: ほたる : 2007/04/25(水) 11:52  ID:QyqCBhYH sub-Ds
>カヅサツ様


> そして、読み手の環境が対応していなかったり、あるいは無視する環境の場合、決定ボタンを押しても何もおきません。
> あるいは、そもそもそういう環境ではボタンを出さないとか、いろいろな手があります。

そうすると、決定ボタンは出さないで、
プルダウンメニューで選択するだけで
切り替わるようにするのは可能という事でしょうか。
>>1で教えていただいたのをどこか修正すれば出来ますか?
何度もスミマセン(>_<)

7   名前: 某制作 : 2007/04/25(水) 11:52  ID:gFY2524F sub-Q5
<form>
<select name="list" onchange="pickUp();">
<option value="HTML" selected="selected">HTML</option>
<option value="CSS">CSS</option>
<option value="Javascript">Javascript</option>
<option value="Perl">Perl</option>
</select>
<script type="text/javascript">
pickUp();
</script>
<input type="button" value="決定" />
</form>


>プルダウンメニューで選択するだけで
という事ですが、それならば
formのタグを上記にしてみて下さい。

ただし
> そして、読み手の環境が対応していなかったり
というのはJavascriptがオフになっている設定の場合などですが、
上記のスクリプトは実行されませんので空白のままになります。


8   名前: 某制作 : 2007/04/25(水) 11:52  ID:gFY2524F sub-Q5
おまけですが
<div id="answer"></div>

<script type="text/javascript">
document.write("<div id='answer'></div>");
</script>
にすれば
Javascriptがoffの時、枠自体が表示されなくなるので
すっきりしますかね…

9   名前: カヅサツ ◆ThCi95HEzw : 2007/04/25(水) 11:52  [URL]  ID:O5hEMlpW sub-r2
> そうすると、決定ボタンは出さないで、
> プルダウンメニューで選択するだけで
> 切り替わるようにするのは可能という事でしょうか。

いいえ。私が >>4 で言いたかったのは
読み手の環境が対応していなかったり、あるいは無視する環境の場合、プルダウンメニューをいじったり、決定ボタンを押しても何も起きないため、残念な思いをするだろうから、ならばそういう環境はそもそもプルダウンメニューや決定ボタンそのものを出さないようにするという手があります、という話です。

10   名前: ほたる : 2007/04/25(水) 11:52  ID:QyqCBhYH sub-Ds
>某制作様
ご丁寧に有難うゴザイマス!
お蔭様でだいぶ分かってきました。
恐らく時間はもの凄くかかると思いますが
頑張ってやってみます♪

>カヅサツ様
確かに何も起きなかったら残念な思いをしてしまいますよね。
環境が対応してない人の事も考えた形に出来るように頑張ってみます。
有難うゴザイマシタ!

11   名前: カヅサツ ◆ThCi95HEzw : 2007/04/25(水) 11:52  [URL]  ID:O5hEMlpW sub-r2
一応できた。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
	"http://www.w3.org/TR/html4/strict.dtd">
<html lang="ja" dir="ltr">
<head>
<title></title>
<style type="text/css">
</style>
</head>
<body>
<noscript id="doraemon">
	<p>JavaScript非対応・あるいは無視する環境では、代わりにこのテキストが表示されまふ</p>
</noscript>
<script type="text/javascript">
var ms_optionList = new Array(
	"選択してください",
	"HTML",
	"CSS",
	"JavaScript"
)
var pk_box = document.getElementById('doraemon');

//----------
var pk_p = document.createElement('p');
var pk_text = document.createTextNode('');
pk_p.appendChild(pk_text);

var ms_p = document.createElement('p');
var ms_select = document.createElement('select');
var ms_opVal = new Array(ms_optionList.length);
var ms_options = new Array(ms_optionList.length);
for (var i=0; i < ms_optionList.length; i++){
	ms_opVal[i] = document.createTextNode(ms_optionList[i]);
	ms_options[i] = document.createElement('option');
	ms_options[i].appendChild(ms_opVal[i]);
	ms_select.appendChild(ms_options[i]);
}
ms_select.onchange = function(){
	pickUp(this);
}
ms_p.appendChild(ms_select);
pk_box.parentNode.insertBefore(ms_p, pk_box.nextSibling);
pk_box.parentNode.insertBefore(pk_p, pk_box.nextSibling);

function pickUp(obj){
	var pk_newText = document.createTextNode(obj.options[obj.selectedIndex].firstChild.nodeValue);
	pk_p.replaceChild(pk_newText, pk_p.firstChild);
}
</script>
</body>
</html>

12   名前: ほたる : 2007/04/25(水) 11:52  ID:QyqCBhYH sub-Ds
>カヅサツ様
わわ☆
有難うゴザイマス!
じっくりと勉強させていただきます。

13   名前: 匿名 : 2007/04/25(水) 11:52  ID:aQuF.kCj sub-Cz
ただの雑談ネタです。DOM3 を書きたかっただけ。動作はしない。

使用前:
<ul xmlns="http://www.w3.org/1999/xhtml">
  <li>HTML</li>
  <li>CSS</li>
  <li>JavaScript</li>
</ul>

使用後:
<div xmlns="http://www.w3.org/1999/xhtml">
  <p></p>
  <select>
    <option>HTML</option>
    <option>CSS</option>
    <option>JavaScript</option>
  </select>
</div>

<script type="application/javascript; version=1.6"><![CDATA[

if (document.implementation &&
    document.implementation.hasFeature ('Core'  , '3.0') &&
    document.implementation.hasFeature ('+HTML' , '2.0') &&
    document.implementation.hasFeature ('+Range', '2.0') &&
    document.implementation.hasFeature ('+BasicEvents', '3.0')
) {
    var ns     = 'http://www.w3.org/1999/xhtml';
    var input  = document.getElementsByTagNameNS (ns, 'ul')[0];
    var doc    = input.ownerDocument;
    var output = input.parentNode.insertBefore (doc.createElementNS (ns, 'p'), input);
    
    doc.renameNode (input, ns, 'select');
    Array.forEach (input.childNodes, function (node) { doc.renameNode (node, ns, 'option'); } );
    
    // not standard ECMA-262
    var range = (doc.createRange || doc.getFeature ('Range', '2.0').createRange) ();
    range.setStartBefore (output);
    range.setEndAfter (input);
    range.surroundContents (doc.createElementNS (ns, 'div'));
    
    (input.addEventListener || input.getFeature ('Events', null).addEventListener)('change', {
        outputText  : output.appendChild (doc.createTextNode ('ABC')),
        handleEvent : function (event) {
            var node = event.currentTarget;
            if (! node.isSupported ('HTML', '2.0')) node = node.getFeature ('HTML', '2.0');
            this.outputText.data = node.options[ node.selectedIndex ].text;
        }
    }, false);
}

]]></script>

14   名前: 匿名 : 2007/04/25(水) 11:52  ID:aQuF.kCj sub-Cz
>>13
訂正:
Array.forEach (input.childNodes, function (node) { if (node.localName == 'li') doc.renameNode (node, ns, 'option'); } );

Firefox なら動くかと思ったけど、まだ駄目だった。

一覧へ戻る