ラウンジ(兼FAQ掲示板)

セレクトボックスの選択値をクリップボードにコピーする
過去ログ NO.1129977543
□ 希(のぞみ) [2005年10月19日20時13分]
はじめまして。よろしくお願いします。


http://jsm.suepon.com/script/jsm34.html
応用2の『セレクトボックスの選択値をクリップボードにコピーする』についての質問です。

1ページ内に内容の違うセレクトボックス<form name=obj>〜</form>をいくつも設置したいのですが、その場合どこの記述を変更すればいいでしょうか?下記のように設置するとエラーになってしまいます。

例)
<form name=obj>
<input type=hidden name=temp>
<select name=sel onChange="clip_copy(this)">
<option value=''>選択して下さい
<option value='111111111111111'>項目1
<option value='222222222222222'>項目2
</select>
</form>
<form name=obj>
<input type=hidden name=temp>
<select name=sel onChange="clip_copy(this)">
<option value=''>選択して下さい
<option value='AAAAA'>項目A
<option value='BBBBB'>項目B
</select>
</form>
□ NXer [2005年10月20日14時14分]

はじめまして。NXerです。参考書を片手にjsを学んでいます。

>違うセレクトボックス 
aとbとを設置してみました。
------------------------------こんな感じですか。
セレクトボックスaの選択値をクリップボードにコピーする
a [ ] 選択して下さい (項目野球1野球2サッカー1サッカー2)
セレクトボックスbの選択値をクリップボードにコピーする
b [ ] 選択して下さい (項目ゴルフ1ゴルフ2F11F12)
----------------------------------------------

そのスクリプト
-------------------------------------------------
<title>clip_copy function by nxere</title>
<script language="JavaScript">
function clip_copy(p) {
tx = p.options[p.selectedIndex].text;
val = p.options[p.selectedIndex].value;
document.obj.temp.value = val;
if (document.all && navigator.userAgent.match(/windows/i))
if (val) {
copy_obj = document.obj.temp.createTextRange()
copy_obj.execCommand("Copy")
alert(tx + " をクリップボードにコピーしました");
}
else alert("コピーする項目が選択されていません");
}
</script>
</HEAD>
<BODY>
セレクトボックスaの選択値をクリップボードにコピーする<p>
<form name=obj>
 a<input type=hidden name=temp>
 <select name=sel onChange="clip_copy(this)">
 <option value=''>選択して下さい
 <option value='阪神'>野球1
 <option value='中日'>野球2
 <option value='ジュビロー'>サッカー1
 <option value='ガンバ'>サッカー2
 </select>
</form>
セレクトボックスbの選択値をクリップボードにコピーする
<form name=obj1>
 b<input type=hidden name=temp>
 <select name=sel onChange="clip_copy(this)">
 <option value=''>選択して下さい
 <option value='ウッズ'>ゴルフ1
 <option value='シン'>ゴルフ2
 <option value='シューマッハ'>F11
 <option value='アロンソ'>F12
 </select>
</form>
</BODY>
----------------------------------------------------
希さんとの違い
■------------------
<form name=obj> 
<form name=obj>
□--------------------
<form name=obj>
<form name=obj1>
-----------------------
>どこの記述を変更
上ですね。適当に分かりやすい名前でいいと思います。
例、sentaku1 sentaku2 sentaku3 など 
ついでに3つボックスを作りましたが大丈夫でした。
もちろん、form name=obj2にしました。以上です。

*****************************参考書の説明です。
フォームの参照には添え字だけでなくて名前による参照も
javascriptではサポートされています。名前による参照の
場合、それぞれの要素のname属性によってつけられた名前
を参照します。
たとえば、上の場合 name = obj では
属性がname,名前がobjです。
--------------------------------------------------------引用
「そのために、同じwebページ内に同じ名前を使ってはいけません。」
(宮坂雅輝 JavaScript Handbook 3rd ed ソフトバンク Pub
2001 p.78)
----------------------------------------------------------
希さんは obj,obj と同じ名前ですね。
複数になると obj1, obj2, obj3,,,,objiのように最初を1に
するほうが混乱しないかもしれません。(objiとはi番目という意味。)

実はエラーがでるので適当に名前を変えたらうまくできたという解決なんで
す。(以下小文字指定、これでは、回答するのに小ッ恥ずかしくて、あわてて
参考書を見たら、あったー!!上の説明を見つけるこどができてうれしか
ったです(激笑フォーム編))。
□ 希(のぞみ) [2005年10月22日19時38分]
はじめましてNXerさん。ご回答ありがとうございます。

> 希さんは obj,obj と同じ名前ですね。
> 複数になると obj1, obj2, obj3,,,,objiのように最初を1に
> するほうが混乱しないかもしれません。(objiとはi番目という意味。)

上記のやり方で解決しました!ありがとうございます

suepon.com | CGI作成/CGI制作 | JavaScript | ドメイン検索 | バナー自動作成 | Google ダンスツール | 松浦亜弥 | H.P.memo | パソコン | ネイル

Copyright (C) 2002 - 2009 suepon , All rights reserved. Powered by CGI Script Market.