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

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

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

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

JavaScript

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

Q&A

解決済

2回答

377閲覧

iQueryでhtml要素の属性の取得設定でattr()が機能しない

ys-tombi2

総合スコア23

HTML5

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

JavaScript

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

0グッド

1クリップ

投稿2022/01/27 08:11

iQueryでタブの属性を取得・設定する時 attr()を使ってできると思っていました。

しかし、残念ながらいい結果が得られませんでした。
attr()のかわりに css()を使って何とか期待の結果を得ることができました。
以下はその実験をしたときのコードです!

イメージ説明

変数xには値がセットされますが、変数yは undefined のままです。

この場合、なぜattr()はうまく機能しないのでしょうか。その理由を教えて頂きたいです。

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

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

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

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

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

int32_t

2022/01/27 08:14

jQueryのcss()とattr()のマニュアルを読んでみましたか?
ys-tombi2

2022/01/27 08:15

ごめんなさい iQueryなんて存在しないですね。当然 jQueryです
guest

回答2

0

colorという属性が設定されていないからでは?
もちろん変な属性はつけない方がいいです
それをやるのがcssメソッドでしょう

javascript

1<script> 2$(function(){ 3 console.log([ 4 $('#test1').attr('color'), 5 $('#test2').attr('color'), 6 $('#test3').attr('color'), 7 $('#test4').attr('color'), 8 ]); 9 console.log([ 10 $('#test1').css('color'), 11 $('#test2').css('color'), 12 $('#test3').css('color'), 13 $('#test4').css('color'), 14 ]); 15}); 16window.addEventListener('DOMContentLoaded', ()=>{ 17 console.log([ 18 test1.getAttribute('color'), 19 test2.getAttribute('color'), 20 test3.getAttribute('color'), 21 test4.getAttribute('color'), 22 ]); 23 console.log([ 24 getComputedStyle(test1).color, 25 getComputedStyle(test2).color, 26 getComputedStyle(test3).color, 27 getComputedStyle(test4).color, 28 ]); 29}); 30</script> 31<style> 32#test3{color:lime;} 33#test4{color:lime !important;} 34</style> 35<font id="test1" color="red">1</font> <!-- color属性を反映して赤くなる --> 36<font id="test2" color="red" style="color:blue">2</font> <!-- style属性のcolorを反映して青くなる --> 37<font id="test3" color="red" style="color:blue">3</font> <!-- スタイルシートよりstyle属性が勝つので青--> 38<font id="test4" color="red" style="color:blue">4</font> <!-- スタイルシートを優先して緑になる -->

jQueryと生jsとの比較です

投稿2022/01/27 08:16

編集2022/01/27 09:06
yambejp

総合スコア114843

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

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

ys-tombi2

2022/01/27 08:30

stylesheet に .menu-item {color: red;}と記入してあります。そして表示もそのようにできています。これがattr()メソッドからみて属性ではないのでしょうか。そこが理解できないのです。
yambejp

2022/01/27 08:40 編集

attr=属性とはHTML要素に具体的に属性として書かれているものです スタイルシートから参照した値ではありません 追記確認ください
ys-tombi2

2022/01/27 08:48

<div id="hoge" color="red" style="color:yellow">test</div> この記述で, color=... とstyle=... がどのように働くのか、またどのように整合するのか理解できません。 説明のあるサイトを教えて頂けないでしょうか。
yambejp

2022/01/27 08:53 編集

例示のcolor="red"は非常に古い書き方です <font color="red">red</font> なら文字を赤くしますが、今はやっては行けないことになっています https://developer.mozilla.org/ja/docs/Web/HTML/Element/font そのHTMLに適用されているスタイルシートを参照したいなら getComputedStyle()を利用して調べるということです
guest

0

ベストアンサー

その属性が書かれていなかったのでは。

これは古い属性です。代わりに CSS の color プロパティを使用して下さい。
HTML 属性リファレンス - HTML: HyperText Markup Language | MDN

投稿2022/01/27 08:18

Lhankor_Mhy

総合スコア36115

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

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

ys-tombi2

2022/01/27 08:37

ご指摘のページを見ると、たしかに「これは古い属性です。代わりに CSS の color プロパティを使用して下さい。」と書いてあります。しかし、その「古い属性です」という部分が分かりません。 古い属性と、そうでない属性の違いを説明したサイトを教えて頂けませんでしょうか。 またjQueryのcssメソッドとattrメソッドの違いを説明したサイトを教えて頂けませんでしょうか。
Lhankor_Mhy

2022/01/27 08:47

つまり、おそらく ys-tombi2 さんはCSSのプロパティとHTML属性(アトリビュート)を混同されているのだと思います。
ys-tombi2

2022/01/27 13:08

 なるほど、「CSSプロパティーとHTML属性の混同」というご指摘をヒントに調べてみました。結果は、両者を区別せずに混同していたことが確認できました。  おかげさまで、独習中のjQueryの勉強を投げ出さずに、前に進むことができそうです。ありがとうございました。
yambejp

2022/01/28 01:42

HTMLの属性は原則勝手につけてはいけません。 どうしても必要な場合はカスタムデータ(data-*)属性をつかってください
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問