過去ログ 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番目という意味。)
上記のやり方で解決しました!ありがとうございます
|
|