iQueryでタブの属性を取得・設定する時 attr()を使ってできると思っていました。
しかし、残念ながらいい結果が得られませんでした。
attr()のかわりに css()を使って何とか期待の結果を得ることができました。
以下はその実験をしたときのコードです!
変数xには値がセットされますが、変数yは undefined のままです。
この場合、なぜattr()はうまく機能しないのでしょうか。その理由を教えて頂きたいです。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
回答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総合スコア118256
stylesheet に .menu-item {color: red;}と記入してあります。そして表示もそのようにできています。これがattr()メソッドからみて属性ではないのでしょうか。そこが理解できないのです。
attr=属性とはHTML要素に具体的に属性として書かれているものです
スタイルシートから参照した値ではありません
追記確認ください
<div id="hoge" color="red" style="color:yellow">test</div>
この記述で, color=... とstyle=... がどのように働くのか、またどのように整合するのか理解できません。
説明のあるサイトを教えて頂けないでしょうか。
例示のcolor="red"は非常に古い書き方です
<font color="red">red</font>
なら文字を赤くしますが、今はやっては行けないことになっています
https://developer.mozilla.org/ja/docs/Web/HTML/Element/font
そのHTMLに適用されているスタイルシートを参照したいなら
getComputedStyle()を利用して調べるということです
0
ベストアンサー
その属性が書かれていなかったのでは。
これは古い属性です。代わりに CSS の color プロパティを使用して下さい。
HTML 属性リファレンス - HTML: HyperText Markup Language | MDN
投稿2022/01/27 08:18
総合スコア37683
ご指摘のページを見ると、たしかに「これは古い属性です。代わりに CSS の color プロパティを使用して下さい。」と書いてあります。しかし、その「古い属性です」という部分が分かりません。
古い属性と、そうでない属性の違いを説明したサイトを教えて頂けませんでしょうか。
またjQueryのcssメソッドとattrメソッドの違いを説明したサイトを教えて頂けませんでしょうか。
こちらでよろしいですか?
> The .css() method is a convenient way to get a computed style property from the first matched element
https://api.jquery.com/css/#css-propertyName
> 要素は次のように属性(Attribute)を持つこともできます
https://developer.mozilla.org/ja/docs/Learn/HTML/Introduction_to_HTML/Getting_started#attributes
つまり、おそらく ys-tombi2 さんはCSSのプロパティとHTML属性(アトリビュート)を混同されているのだと思います。
なるほど、「CSSプロパティーとHTML属性の混同」というご指摘をヒントに調べてみました。結果は、両者を区別せずに混同していたことが確認できました。
おかげさまで、独習中のjQueryの勉強を投げ出さずに、前に進むことができそうです。ありがとうございました。
2022/01/28 01:42
HTMLの属性は原則勝手につけてはいけません。
どうしても必要な場合はカスタムデータ(data-*)属性をつかってください
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
