過去ログ NO.1132370345
□ 希(のぞみ) [2005年11月18日00時13分]お世話になります。以前回答いただきましたが、少し違う質問させていただきます。
テキストエリアの内容をクリップボードにコピーしたいのですが、テキストボックスを2個用意して、その2個のテキストボックスの内容をくっつけてコピーは可能でしょうか?
http://jsm.suepon.com/script/jsm34.html
例えばAのテキストボックスには11111が入力されていてBのテキストボックスには22222と入力されていた場合に、クリップボードにコピーボタンを押すと、クリップボードに1111122222と文字列がコピーされるような感じです。
お分かりになられる方おられましたらご回答お願いいたします。
□ NXer [2005年11月19日12時19分] >少し違う質問
希さんの違うご希望の趣旨が不明なために、汎用的なスクリプトに 挑戦しました。NXerです。前回は3つの項目も試したことから 3項目の例にしました。
項目aから<111> 項目bから<222> 項目cから<333> をa〜cの順に連続して選び、そこでコピーされたものを 例えば<111222333>ペーストします。さらに応用ですが、ペースト後 これにファイル名を付けて.txtで保存して、エクセルのcsvで読めば すぐに表になるように<111,222,333,>とすることもできます。 項目の選択順は、a−c−bでもa−b−aでもOKでした。
jsm34.htmlを再起動しなくても、連続して同一画面で a−b−cを選ぶことができるように、初期化を組み込み ました。複雑な組み合わせができそうです。使用目的が不明 のために、データ源を野球とすると、バレンタイン監督のように、 チームの打順を換えることを例にします。このjavascript があったら先頭バッター群aに4名、クリーンアップbに5名、 代打cに6名、ピッチャーdに3名として、何通りでも組み合 わせは可能です。商品群(紳士服、婦人服、子供服)のセット 音楽のポピュラー、歌謡曲、ジャズ、イージリスニングなどの ジャンルから選曲する、さらに家庭でほぼ栄養価の等しい食品 群でメニュを選択する、専門的な栄養管理でカロリー面から 食材を選ぶなど、の汎用性があるjavascriptです(これは 妄想ですが)。
------------------------------string_joining by nxer <script language="JavaScript"> max=3; i=0; cpytxt=""; function clip_copy(p) { tx = p.options[p.selectedIndex].text; val = p.options[p.selectedIndex].value+","; if (val){ document.obj.temp.value = cpytxt+val; cpytxt += val; i++; if (i==max){i=0; cpytxt=""; } } //以上挿入など変更部分、以下既存スクリプト 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> <BODY> 前の投稿を参考にしてください。 ----------------------------------------------------- 下手な説明です。 ---------------初期設定 max=3; //項目数 i=0; //カウント変数 cpytxt=""; //作業用文字変数 ----------------------最後のコンマはcsv用、目的により削除 val = p.options[p.selectedIndex].value+","; ------------------------------------- if (val){ //選択があるときだけ動作する条件 document.obj.temp.value = cpytxt+val; //追加文 cpytxt += val; //追加代入文 i++; //項目数の累積 if (i==max){ //設定項目数になったならば i=0; //カウントの初期化 cpytxt=""; //作業文字変数のクリア } } ------------------------------------------- 以上です。お試しください。
**************************************愚考の章(笑) 希さんのお望みが当方には不明ですから、以下の説明でさらに 変更が必要な場合にそなえて追記します。特に難しいことではあり ません。普通に考えるように、変数(variable)に値を代入 したりするだけです。検索用に少しだけ専門用語を含みます。
javascriptによる文字列の連結/結合処理がテーマです。 --------------------- cpytxt += val; ----------cpytxt=cpytxt+valの式のjavascriptの表現
この場合、新たに選んだ文字列NEW(val)をOLD(cpytxt)として 残して、その後に新たに選んだNEWをまたOLDに追加する、文字列 の結合問題と考えました。どのようなプログラム/スクリプト言語でも よいのですが、次はその考え方を式で表したものです。 = の代わりに <− のほうが分かり易いかもしれません。 算数の1+2=3とは、左右が逆転します。
OLD=OLD+NEW;
この場合の = 記号は、等値記号(is equal to)ではなくて 代入される/する(be assigned the value)という意味です。 次のように式は、変数(variable)に値を入れることが基本です。 ------------------- NEW="1111”; --------------------ここでは文字列です。
変数は、右辺にくることもできます。
OLD=NEW; これで、第2項目に進むとき、第1項目で選んだ値をOLDに 与えています。
OLD=OLD+NEW; これは、第2項目を追加した値をOLDに代入して、第3項目 選択に進みます。
余談ですが、assignは、英和辞典で編集者の目に留まらない 用語のためか記載が無かったり、あっても、アサインする、 割り当てる、です。小学館プログレッシブは割り当てる、 代入する、でした。簡単に言うとbe given ある値が与えら れるということです。
数値が等しい場合は、== を使います。javascriptの真偽判定は 文字の場合は、eq です。(例 if (i==max),,,)
コンピュータはどちらかというと数の世界のようですが、文字列 の世界も大切な分野です。今回は希さんは基礎的な文字列処理 (basic string manipulation)に進まれました。次はどんな 課題を発見されますでしょうか。すえぽんさんのjavascriptも cgiと同じように、奥が深いですね(感涙)。
一定時間書込が無かったので過去ログに移りました
|
|