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

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

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

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

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

jQuery

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

Q&A

解決済

3回答

1227閲覧

【配列】配列への代入が上手くいかない【JavaScript】

tonari

総合スコア45

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

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

jQuery

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

0グッド

1クリップ

投稿2018/01/18 09:46

こんにちわ。
タイトルにもあるのですが、配列への代入が思ったような感じにならず困っています。
環境としてはjQueryが入っています。

HTML <div id="wrap"> <input type="checkbox" name="t1" value="1" id="test01"><label for="test01">test1</label> <input type="checkbox" name="t2" value="1" id="test02"><label for="test02">test2</label> <input type="checkbox" name="t3" value="1" id="test03"><label for="test03">test3</label> </div> <div id="hyouzi"></div>
JavaScript var inputs = $('#wrap').find('input'); var pArray = new Array(); for(var i = 1, len = inputs.length; i < len; i++){ var name = inputs[i].name; pArray = $('[name]:checked').next().text(); } console.log(pArray[0]);//'t'が取れる $('#hyouzi').html(pArray+(','));

チェックボックスのチェックされているtextをまとめて表示したくpArrayにとりあえずまとめました。
そのpArrayをhtml()で表示させるところまでは良かったのですが、
表示が、 test1test2test3, の様になってしまいました。(最後にだけカンマがはいってしまう)
本来やりたい表示としては test1,test2,test3 の様な表示だったのですが全部つながってしまってる感じ(?)になっていそうなのです。
console.log(pArray[0]);で確認してみました所、取れた値は t でした。(test1のtです。なのでpArray[1]だとeがとれました。)

やはり、うまく配列に入ってないのですが、どのようにしてよいか分からず困っております。
詳しい方教えていただけますと助かります。よろしくお願いいたします。

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

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

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

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

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

guest

回答3

0

ベストアンサー

こういうことですかね?

javascript

1$(function(){ 2 $('input[type=checkbox]').on('change',function(){ 3 var pArray = $.map($('[type=checkbox]:checked'),function(x){ 4 return $(x).next('label').text(); 5 }); 6 $('#hyouzi').html(pArray.join(',')); 7 }).trigger('change'); 8});

HTML

1<div id="wrap"> 2 <input type="checkbox" name="t1" value="1" id="test01"><label for="test01">test1</label> 3 <input type="checkbox" name="t2" value="1" id="test02"><label for="test02">test2</label> 4 <input type="checkbox" name="t3" value="1" id="test03"><label for="test03">test3</label> 5</div> 6 7<div id="hyouzi"></div> 8

投稿2018/01/18 10:07

yambejp

総合スコア114814

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

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

tonari

2018/01/19 02:01

回答ありがとうございます!こちらのやり方で解決できました。 本当に助かりました。ありがとうございます。
guest

0

以下は検証していません.


ぱっと見, 配列に対するインデックスの指定が抜けているように見える他, 無駄な検索が幾つか見受けられます.

JavaScript

1var inputs = $('#wrap').find('input'); 2var pArray = new Array(); 3 4for(var i = 1, len = inputs.length; i < len; i++){ 5 //以下はpArrayに文字列を入れている 6 //var name = inputs[i].name; 7 //pArray = $('[name]:checked').next().text(); 8 9 //チェックされている時に限り配列にnextノードのtextを追加する 10 if(inputs[i].is(":checked")){ 11 pArray.push(inputs[i].next().text()); 12 } 13} 14console.log(pArray[0]);//'t'が取れる→なぜならpArrayに文字列を突っ込んでいたから 15 16//$('#hyouzi').html(pArray+(',')); 17$('#hyouzi').html(pArray);//pArray.join(",");

投稿2018/01/18 10:06

defghi1977

総合スコア4756

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

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

tonari

2018/01/19 02:02

回答ありがとうございます!解決しました
guest

0

色々とおかしいです…。

javascript

1 pArray = $('[name]:checked').next().text();

text()は配列じゃないですよ。何れにせよこれは「文字列の代入」ですので
先にやっていたvar pArray = new Array();これは全くの無意味です。

javascript

1 console.log(pArray[0]);//'t'が取れる

この時点ですでにpArrayは配列ではなくなっています。
配列の操作方法を理解したほうがよろしいかと。

それと

javascript

1 $('#hyouzi').html(pArray+(','));

これはどういう意図ですか?やっていることはpArrayの後ろにコンマをくっつけているだけです。
pArrayが配列だったとしてもよくわかりません。

投稿2018/01/18 10:01

sousuke

総合スコア3828

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

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

tonari

2018/01/19 02:02

回答ありがとうございます!解決できました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問