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

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

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

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

jQuery

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

Q&A

解決済

1回答

509閲覧

配列と比較してチェックボックスにチェックを入れる方法

ka2ga2

総合スコア19

JavaScript

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

jQuery

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

0グッド

0クリップ

投稿2018/11/08 20:55

一方のリストと一致する名前を、もう一方のリストでチェックしたいのですが、jQueryの書き方についてご指導頂けませんでしょうか。

具体的には、次のHTMLの<h4>現在の名前</h4>に「一郎と三郎」があるので、<h4>チェックする名前</h4>の「一郎と三郎」にチェックする。というイメージです。

html

1<h4>現在の名前</h4> 2<ul class="current_names"> 3 <li>一郎</li> 4 <li>三郎</li> 5</ul> 6 7<h4>チェックする名前</h4> 8<ul class="checkbox_names"> 9 <li><label><input type="checkbox" name="name">一郎</label></li> 10 <li><label><input type="checkbox" name="name">二郎</label></li> 11 <li><label><input type="checkbox" name="name">三郎</label></li> 12 <li><label><input type="checkbox" name="name">四郎</label></li> 13 <li><label><input type="checkbox" name="name">五郎</label></li> 14</ul>

問題のjQueryがこちらになります。

jquery

1$(function(){ 2 3 // STEP➀配列を作る 4 var current_names = []; 5 6 // STEP➁配列に現在の名前を入れる 7 $( '.current_names li' ).each( function () { 8 var current_name = $( this ).text(); 9 current_names.push( current_name ); 10 }); 11 12 // STEP➂現在の名前と一致するものにチェックを入れる 13 $( '.checkbox_names input' ).each( function () { 14 $( this ).match( current_names ).prop( 'checked', true ); 15 }); 16 17});

どうやら上のjQueryはSTEP➂がおかしいようなので、その書き方について教えて頂ければと思います。
宜しくお願い致します。

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

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

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

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

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

guest

回答1

0

ベストアンサー

こんにちは

STEP➂を、以下のように修正してみるといかがでしょうか?

javascript

1 // STEP➂現在の名前と一致するものにチェックを入れる 2 $( '.checkbox_names input' ).each( function () { 3 var text = $(this).parent().text(); 4 $( this ).prop( 'checked', current_names.includes(text)); 5 });

**上記の動作確認用サンプル: **https://jsfiddle.net/jun68ykt/yko7vbn9/5/

追記

別案を考えてみました。以下です。

javascript

1$(function(){ 2 3 $('.checkbox_names input').each(function () { 4 var name = $(this).parent().text(); 5 var count = $(`.current_names li:contains(${name})`).length; 6 $(this).prop('checked', count > 0); 7 }); 8 9});

**上記の動作確認用サンプル: ** https://jsfiddle.net/jun68ykt/obda476u/1/

投稿2018/11/08 21:16

編集2018/11/08 22:12
jun68ykt

総合スコア9058

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

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

ka2ga2

2018/11/08 21:31

こんにちは!できました。いつもありがとうございます。
jun68ykt

2018/11/08 21:39

解決したようで、よかったです???? 別案を考えたので、参考までに回答に追記しました。
ka2ga2

2018/11/08 21:41

別案まで!どうもありがとうございます。中かっこ{}をたまに見ますが、これは一体何なのでしょうか?
ka2ga2

2018/11/08 21:49 編集

ああ!!失礼致しました。{name}の方です。申し訳ございません。
jun68ykt

2018/11/08 21:56

`:contains(${name})` のほうですね。まず `・・・` はテンプレート文字列と呼ばれるものです。 テンプレート文字列 https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/template_strings テンプレート文字列の中で変数を使うとき、 ${ } で囲みます。 たとえば var name = "一郎"; var str = `名前:${name}`; とすると、 str には "名前:一郎" という文字列が入ります。 var x = 100; var str2 = `x+1:${x+1}`; とすると str2 には、 "x+1:101" という文字列が入ります。
ka2ga2

2018/11/08 21:59

var str = `名前:${name}`; は var str = `名前:"+name+"`; とは何が違うのでしょうか?
jun68ykt

2018/11/08 22:08

var str = `名前:"+name+"`; だと、 str には 「名前:"+name+"」 という文字列が入ってしまいますね。 var name = "一郎"; のときに、「名前:一郎」 という文字列を得るには "名前:" + name としても得られますが、テンプレート文字列を使えば、`名前:${name}` と、 + を使って結合しなくてよいという利点があります。
ka2ga2

2018/11/08 22:10

なるほど。わかったような気がします。後づけの蛇足な質問にお答え頂き心より感謝致します。どうもありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問