質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

236閲覧

javascriptでクリップボードへの文字列のコピー

rinrin1137

総合スコア87

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2019/10/31 03:38

編集2019/10/31 04:16

実現したいこと

HTMLでコピーボタンを用意しておいて、ボタンが押されたら文字列をクリップボードへコピーをしたいのですがどうしたら上手くコピーでますでしょうか?

html

1<button class="copyBtn" onclick="copyClip()">コピー</button> 2<textarea id="copyTxt"><?php echo $row['contents']; ?></textarea> 3 4<script type="text/javascript"> 5 function copyClip(){ 6 var Element = document.getElementById("copyTxt"); 7 Element.select(); 8 document.execCommand("copy"); 9 } 10</script>

javascriptの経験が殆どありませんので、なるべく初心者に分かりやすい簡潔なコードで教えていただけますと幸いです。

追記

css

1#copyTxt{ 2display: none; 3 4//以下の方法で画面外に置く以外の方法でなにかありますでしょうか? 5position: absolute; 6left: -99999px; 7}

CSSを適用しないで表示にするとコピーはできる状態となります。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2019/10/31 04:04

うまくいかないとは? 質問ではなく作業依頼ということですよね。
guest

回答1

0

ベストアンサー

いちどPHPはわすれてください
css追記しました

javascript

1<style> 2#copyTxt{ 3position:absolute; 4top:-999; 5} 6</style> 7<script> 8function copyClip(){ 9 var Element = document.getElementById("copyTxt"); 10 Element.select(); 11 document.execCommand("copy"); 12} 13</script> 14 15<button class="copyBtn" onclick="copyClip()">コピー</button> 16<textarea id="copyTxt"> 17hogehoge 18fugafuga 1912345678 20</textarea> 21

見た感じ、テキストエリアのすべての文字が選択されて
クリップボードにコピーされているようです
どういった環境で実行した時にどうやって確認してできてないと判断しましたか?

投稿2019/10/31 03:48

編集2019/10/31 04:11
yambejp

総合スコア114829

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

rinrin1137

2019/10/31 04:02

もしかすると、CSSでdisplay:noneを設定して非表示にしているのが原因でしょうか?
rinrin1137

2019/10/31 04:04

displya:noneの設定を外して、表示した状態では問題なくコピーができました! なにかいい方法はないものでしょうか?
Y.H.

2019/10/31 04:09

> CSSでdisplay:noneを設定して非表示にしている 条件として重要なことなので質問に記載ください。 ほかに条件があればそれも記載ください。
yambejp

2019/10/31 04:12

見せたくないということですね? css追記してあります
rinrin1137

2019/10/31 04:14

コピーするテキストは非表示状態にしておきたいのですが、画面外に置く以外でなにか方法はありますでしょうか?
yambejp

2019/10/31 04:17

> 画面外に置く以外 非表示にする選択肢がOKで、画面外に飛ばすのがNGな理由があれば 提示ください
rinrin1137

2019/10/31 04:24

特に理由はありませんが、単純なdisplay:noneでできればと思っておりました。 ちなみにPHPのループで回すとテーブルの該当行のテキストがコピーできませんでした・・・。
yambejp

2019/10/31 04:28

> 単純なdisplay:noneでできればと思っておりました。 非表示のものは選択できないので無理です 透明度で調整する手もありますが余計なものが表示されるので多分NG > PHPのループで回すとテーブルの該当行のテキストがコピーできません 具体的なtextareaの中身を質問文に追記してください
yambejp

2019/10/31 04:41

> 空divでもなんでも作って 削除するならtextareaでも良いような気が・・・
m.ts10806

2019/10/31 04:47

ずっと置いておく非表示要素でやろうとしなくても という意味でした。目的とかそのあたりがよく分からないのでなんとも言えないところはありますけどね。
rinrin1137

2019/10/31 06:53

非表示なものはやはり選択できないのですね・・・。 勉強になりました。
yambejp

2019/10/31 06:55

> PHPのループで回す うんぬんは結局解決した(もしくはどうでもよくなった)のでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問