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

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

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

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

jQuery

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

Q&A

解決済

2回答

4434閲覧

<input type="text">のvalueの値に他要素の文字列を挿入したい

castail

総合スコア117

JavaScript

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

jQuery

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

0グッド

0クリップ

投稿2015/09/03 03:18

編集2015/09/03 03:30

<input type="text">のvalueの値に、他要素の文字列を挿入したいです。

具体的には以下の通りです。

lang

1<input type="text" name="hoge" value="text1,text2,text3"> 2 3<div class="hoge2"> 4<a href="#">text1text1text1text1</a> 5<a href="#">text2text2text2text2</a> 6<a href="#">text3text3text3text3</a> 7<a href="#">text4text4text4text4</a> 8<a href="#">text5text5text5text5</a> 9</div>

「hoge2」のaタグ内の文字列を、「hoge」のvalueの値として挿入したいです。
「hoge2」は動的要素でaタグの数も文字列も変わります。

下記2パターンをご教授いただければ助かります。

(1)並び順3つ目までを「,(カンマ)」区切りで挿入
(2)ランダムで1つ抽出し挿入

ご教授のほどよろしくお願いいたします。

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

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

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

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

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

guest

回答2

0

ベストアンサー

タグにjQueryがあったので、jQuery前提です。
「上から3つ」の後に「ランダム」が実行されるので
そのままだとランダムの結果のみ残る感じになりますが、
// ランダムの下2行をコメントアウトしてもらえれば
「上から3つ」の動作が確認できると思います。

JavaScript

1$(function(){ 2 var hoge = $('[name=hoge]'); 3 // 一旦 input タグの value を空にします 4 hoge.val(''); 5 var hoge2 = $('.hoge2'); 6 7 // 上から3つ 8 var values = []; 9 hoge2.children().each(function(index){ 10 // 3つ以上なら終了 11 if(index >= 3) return false; 12 values.push($(this).html()); 13 }); 14 hoge.val(values.join(',')); 15 16 17 // ランダム 18 var random = Math.floor(Math.random() * hoge2.children().length); 19 hoge.val(hoge2.children().eq(random).text()) 20});

投稿2015/09/03 04:50

編集2015/09/03 04:51
notable

総合スコア415

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

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

castail

2015/09/03 05:08

notable様 ご回答ありがとうございます。 ご教授頂いた内容で実現できました! この度は誠にありがとうございました。
guest

0

基本的な動作としては以下のコードでいけると思います。

JavaScript

1$('.hoge2 a').on('click', fucntion(){ 2 $('hoge').val( $(this).text() ); 3});

(1)の要件は、
text1~ → text2~ → text3~ とクリックした場合、
「text1~,text2~,text3~」と表示したいということでしょうか?
それならば、

JavaScript

1$('.hoge2 a').on('click', fucntion(){ 2 var str_hoge = $('hoge').val(); 3 if ( count( $('hoge').val().split(',') ) <= 3 ) str_hoge = str_hoge + ','; 4 str_hoge = str_hoge + $(this).text(); 5 $('hoge').val( str_hoge ); 6});

のような感じになるんじゃないでしょうか。(テストしてませんのでエラーはでるかも)

(2)については質問の意図が少し分からないので割愛させていただきます。

投稿2015/09/03 04:44

silverleo

総合スコア18

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

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

castail

2015/09/03 05:11

silverleo様 ご回答ありがとうございます。 クリックではなくaタグ内部の文字列を取得したいと考えておりました。 解決策をご提示頂いた方がいらっしゃいましたので、恐縮ですが今回はそちらをベストアンサーとさせて頂きます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問