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

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

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

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

jQuery

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

Q&A

解決済

4回答

3432閲覧

class名を全て取得し、操作したい

scoa

総合スコア66

JavaScript

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

jQuery

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

0グッド

0クリップ

投稿2016/11/09 02:28

編集2016/11/22 01:50

いつもお世話になっております。
実現したいことは下記なのですが、上手くいかず悩んでおります。

***

id="#stage"の、liタグ内にあるclass名を全て取得する
例:class="03"、class="12"、class="25"…

HTML

1<div id="stage"> 2 <ul id="place_1"> 3 <li><img src=" card_3.png" class="03"></li> 4 <li><img src=" card_2.png" class="12"></li> 5 <li><img src=" card_5.png" class="25"></li> 6 <li><img src=" card_4.png" class="34"></li> 7 </ul> 8 <ul id="place_2"> 9 <li><img src=" card_1.png" class="41"></li> 10 <li><img src=" card_4.png" class="54"></li> 11 <li><img src=" card_3.png" class="63"></li> 12 <li><img src=" card_2.png" class="72"></li> 13 </ul> 14 <ul id="place_3"> 15 <li><img src=" card_1.png" class="81"></li> 16 <li><img src=" card_1.png" class="91"></li> 17 <li><img src=" card_3.png" class="103"></li> 18 <li><img src=" card_2.png" class="112"></li> 19 </ul> 20</div>

1桁目のみにする ※桁数は2桁か3桁しか存在しない
例:3、2、5…

特定の値と一致したclass名のimgタグに、
class="active"を付与する

例:特定の値が2の場合、下記のみに追加 ※特定の値は変数になっている

HTML

1<li><img src=" card_2.png" class="12 active"></li> 2<li><img src=" card_2.png" class="72 active"></li> 3<li><img src=" card_2.png" class="112 active"></li>

拙い説明で恐縮ですが、よろしくお願いいたします。

***

下記、なんとかしようとした残骸。
これだと1つ目の画像名しか取得できず…。

jQuery

1$('img').each( function(){ 2 var src = $("#stage ul li img").attr('src'); 3});

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

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

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

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

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

guest

回答4

0

class名は命名規則的に数字だけや数字始まりはできません。

その上で

$(function(){ $('#stage ul li img').each( function(){ var src = $(this).attr('class'); console.log(src); }); });

例えばこんなかんじです。

投稿2016/11/09 02:36

hiim

総合スコア1689

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

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

0

ベストアンサー

数字から始まるclass名を指定する事の是非

よく聞く話でその度に説明しているので外部コンテンツにまとめました。
簡単にまとめると仕様上は許されますが、セマンティクス的な意味で避けた方が良いと思います

コード

私ならJavaScriptで扱いやすいようにHTMLを書き換えます。

HTML

1<div id="stage"> 2 <ul id="place_1"> 3 <li><img class="card" src=" card_3.png" data-no="03"></li> 4 <li><img class="card" src=" card_2.png" data-no="12"></li> 5 <li><img class="card" src=" card_5.png" data-no="25"></li> 6 <li><img class="card" src=" card_4.png" data-no="34"></li> 7 </ul> 8 <ul id="place_2"> 9 <li><img class="card" src=" card_1.png" data-no="41"></li> 10 <li><img class="card" src=" card_4.png" data-no="54"></li> 11 <li><img class="card" src=" card_3.png" data-no="63"></li> 12 <li><img class="card" src=" card_2.png" data-no="72"></li> 13 </ul> 14 <ul id="place_3"> 15 <li><img class="card" src=" card_1.png" data-no="81"></li> 16 <li><img class="card" src=" card_1.png" data-no="91"></li> 17 <li><img class="card" src=" card_3.png" data-no="103"></li> 18 <li><img class="card" src=" card_2.png" data-no="112"></li> 19 </ul> 20</div> 21 22<script> 23'use strict'; 24jQuery('.card:not(.active)').each(function (i, element) { 25 element = jQuery(element); 26 27 if (element.data('no') % 10 === 2) { 28 element.addClass('active'); 29 } 30}); 31</script>

HTMLを書き換えられない制約があるのならページ表示時点でJavaScriptで扱いやすいようにDOMを書き換えます。

Re: abiscoa さん

投稿2016/11/09 06:19

編集2016/11/09 06:22
think49

総合スコア18162

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

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

0

本当にimgのclassにactiveを追加でよいのでしょうか?
リスト形式であれば通常おやのliに付加したほうが都合良さそうですが

またimgのclassの数字を参照していますが、srcの画像ファイル名とリンクしているなら
こんな感じでもよいかもしれません

HTML

1<style> 2.active{background-Color:red} 3</style> 4<script> 5$(function(){ 6 var num=2; 7 var reg=new RegExp("_"+num+"\.png"); 8 $('#stage li').filter(function(){return $(this).find('img').attr('src').match(reg);}).addClass('active'); 9 10}); 11</script> 12<div id="stage"> 13 <ul id="place_1"> 14 <li><img src="card_3.png"></li> 15 <li><img src="card_2.png"></li> 16 <li><img src="card_5.png"></li> 17 <li><img src="card_4.png"></li> 18 </ul> 19 <ul id="place_2"> 20 <li><img src="card_1.png"></li> 21 <li><img src="card_4.png"></li> 22 <li><img src="card_3.png"></li> 23 <li><img src="card_2.png"></li> 24 </ul> 25 <ul id="place_3"> 26 <li><img src="card_1.png"></li> 27 <li><img src="card_1.png"></li> 28 <li><img src="card_3.png"></li> 29 <li><img src="card_2.png"></li> 30 </ul> 31</div>

投稿2016/11/09 03:22

yambejp

総合スコア114769

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

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

0

each文の中のセレクタが変なとこ見てるのでthisで取れると思います。

JavaScript

1$('#stage').find('img').each(function() { 2 var src = $(this).attr('class'); 3});

投稿2016/11/09 02:35

mukkun

総合スコア882

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問