ラウンジ(兼FAQ掲示板)

テキストボックスをクリップボードにコピーする
過去ログ 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と同じように、奥が深いですね(感涙)。
一定時間書込が無かったので過去ログに移りました

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

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