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

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

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

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

1回答

1008閲覧

テキストエリアから選択されたテキストを取得する方法について

taka_oct092018

総合スコア139

JavaScript

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

1グッド

2クリップ

投稿2022/10/14 14:50

編集2022/10/17 08:56

text()の引数であるコードの内容が分かりにくいです。
自分なりに調べてある程度は理解出来ていると思うのですが、
自信がないので添削して頂けないでしょうか。
よろしくお願い致します。
「改訂新版jQuery本格入門 P231 リスト6-8」のコードより。一部編集を加えています。

jQuery

1document.selection && 2 document.selection.createRange().text || 3 $(this) 4 .val() 5 .slice(this.selectionStart, this.selectionEnd)]

【追記・正しくコードを理解出来ているか不安な部分】
(論理和演算子の左辺が真の場合)
document.selection && document.selection.createRange().text

Selectionオブジェクトが使えるならdocument.selection.createRange()によりRangeオブジェクトを取得し、
textプロパティから文字列を取得する。IEに対応しているかを問うコード。

(論理和演算子の左辺が偽の場合)
$(this).val()よりテキストエリアからテキストを取得し、
.slice(this.selectionStart, this.selectionEnd)で選択範囲を指定した上で文字列を生成する。

jQuery

1 const techr = $('#tech-r'); // ラジオボタンの選択(change) 2 const techt = $('#tech-t'); // テキストの選択(select) 3 4 // <form onsubmit="return false;">と同じ(フォームを送信しない) 5 $('form').submit(function() { return false; }); 6 7 // ラジオブタンの選択が変更されたら 8 $('form input[type="radio"]').change(function() { 9 techr.text(this.value); // 選択されたラジオボタンの値を表示 10 }); 11 12 // テキストが選択されたら 13 $('form textarea').select(function() { 14 techt 15 .text(document.selection && // @@@@@@@@ 以下からが疑問のコード @@@@@@@ 16 document.selection.createRange().text || 17 $(this) 18 .val() 19 .slice(this.selectionStart, this.selectionEnd) 20 ); 21 });

HTML

1 <form> 2 <fieldset> 3 <legend>Web関連技術</legend> 4 <input id="tech-h" name="tech" type="radio" value="HTML"> 5 <label for="tech-h">HTML</label> 6 <input id="tech-c" name="tech" type="radio" value="CSS"> 7 <label for="tech-c">CSS</label> 8 <input id="tech-j" name="tech" type="radio" value="JavaScript"> 9 <label for="tech-j">JavaScript</label> 10 <input id="tech-f" name="tech" type="radio" value="Flash"> 11 <label for="tech-f">Flash</label> 12 </fieldset> 13 <fieldset> 14 <legend>jQueryについて</legend> 15 <textarea name="tech" cols="30" rows="3"> 16 jQueryはHTML文書に組み込んで利用されるJavaScriptライブラリです 17 </textarea> 18 </fieldset> 19 <input type="submit" value="送信"> 20 </form> 21 <table> 22 <tr> 23 <td>ラジオボタンの選択(change)</td> 24 <td id="tech-r"></td> 25 </tr> 26 <tr> 27 <td>テキストの選択(select)</td> 28 <td id="tech-t" style="width: 10em;"></td> 29 </tr> 30 </table> 31 32
Cocode👏を押しています

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

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

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

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

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

guest

回答1

0

js

1document.selection && 2 document.selection.createRange().text || 3 $(this) 4 .val() 5 .slice(this.selectionStart, this.selectionEnd)

document.selection は古いIEにあったプロパティで、現行のブラウザにはありません。現在は $(this).val().slice(this.selectionStart, this.selectionEnd) だけでよいです。

投稿2022/10/14 17:11

int32_t

総合スコア21929

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問