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

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

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

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

835閲覧

特定のクラスの中身をとると全部入ってしまう。

c_php

総合スコア29

JavaScript

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2020/02/27 05:20

編集2020/02/27 05:42

いつもお世話になっております。
表題の詳細ですが、
下記のようなテーブルがあり、条件によって
カスタムデータ属性の属性値変わるようにしています。

・今の日時(new Date();)と日時列を比較し、過去か当日か未来かを判定し、判定列の値によってカスタムデータ属性をつける。
・列数は固定ですが、行数はその時によって変化します。

html

1<table> 2 <tr> 3 <th>見出し</th> 4 <th>名前</th> 5 <th>日時</th> 6 <th>判定</th> 7 </tr> 8 <tr> 9 <td>テスト01</td> 10 <td>テスト太郎</td> 11 <td class="cf_16">2020/03/01</td> 12 <td class="cf_18"></td> 13 </tr> 14 <tr> 15 <td>テスト02</td> 16 <td>テスト次郎</td> 17 <td class="cf_16">2020/03/05</td> 18 <td class="cf_18"></td> 19 </tr> 20 <tr> 21 <td>テスト03</td> 22 <td>テスト三郎</td> 23 <td class="cf_16">2020/03/10</td> 24 <td class="cf_18"></td> 25 </tr> 26</table>

javascript

1$(function() { 2 $('td.cf_16').each(function() { 3 var text = $(this).text(); 4 var time = Date.parse(text); 5 var day1 = new Date(time); 6 7 var y_day1 = day1.getFullYear(); 8 var m_day1 = day1.getMonth()+1; 9 var d_day1 = day1.getDate(); 10 11 var today = new Date(); 12 var y_today = today.getFullYear(); 13 var m_today = today.getMonth()+1; 14 var d_today = today.getDate(); 15 16 var deposit = $('td.cf_18').text(); 17 console.log(deposit); 18 console.log(text); 19 20 if(deposit == "未"){ 21 if(y_today == y_day1){ 22 23 if(m_today == m_day1){ 24 if(d_today == d_day1){ 25 $(this).attr("data-time", "same"); 26 }else if(d_today > d_day1){ 27 $(this).attr("data-time", "late"); 28 }else if(d_today < d_day1){ 29 var deposit = $('td.cf_18').text(); 30 $(this).attr("data-time", "early"); 31 } 32 }else if(m_today > m_day1){ 33 $(this).attr("data-time", "late"); 34 }else if(m_today < m_day1){ 35 $(this).attr("data-time", "early"); 36 } 37 }else if(y_today > y_day1){ 38 $(this).attr("data-time", "late"); 39 40 }else if(y_today < y_day1){ 41 $(this).attr("data-time", "early"); 42 } 43 }else{ 44 $(this).attr("data-time", "none"); 45 } 46 47 48 }) 49 50}) 51

上記の場合、
console.logを確認すると「未済未」「2020/03/01」というような状態で出力されます。
よって、deposit == "未"がelseに分岐するのですが、
console.log(deposit);はくっついた状態で変数に入るのに対して
console.log(text);は1つのみ変数に入っているのはなぜでしょうか?

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

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

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

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

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

guest

回答1

0

ベストアンサー

日時のみで判定していた時はどうして正常に動いていたのでしょうか?
console.log(deposit)のときと同じようにくっついた状態になっていないのはなぜでしょうか?

なぜ疑問なのかがわかりません。上のコードには、$('td.cf_18')からの取得処理自体が含まれていません。

投稿2020/02/27 05:23

maisumakun

総合スコア145121

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

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

c_php

2020/02/27 05:42

質問の仕方が悪かったので編集しました。お手数ですが、もう1度見てもらえないでしょうか?
maisumakun

2020/02/27 05:43

外側でeachで回していますので、$(this)は「1個だけ」です。
c_php

2020/02/27 05:46

ありがとうございます。eachの意味を取り違えていました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問