- ベストアンサー
value属性
とくにselectダグなどでvalue=属性値とありますが この属性値をダブルクオーテーションで囲むのと シングルクオーテーションで囲むのと 何も囲まないのでは、どのようにちがってくるのでしょうか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
シングルクォートはやめたほうがいいです。ブラウザによって解釈してくれなかったりします。 では「囲むか囲まないか」については、記号などを含む場合は囲まなければいけないと定められています。 そもそも、そのへんのルールはW3C(参考URL)が決めていて、ブラウザを作る側は、それに従いつつ、もしルール違反のHTMLがあってもなるべく解釈しようと作っていますが、当然ながらその程度は作る側次第です。 したがって結論を言えば、「すべてダブルクォートで囲んだ方が良い」となります。
- 参考URL:
- http://www.w3.org/
その他の回答 (3)
- koutarou504
- ベストアンサー率44% (182/407)
作成者の立場からの現実問題としては、 全てダブルクオーテーション(二重引用符)で囲みましょう。 デメリットは、省略可能時に省略した場合と比べて各値ごとに2文字分サイズが多くなる事だけです。 たまに、JavaScript等でHTMLを出力する時に、 文字列データとして記述する為の引用符とそのデータ内での引用符で一緒になってしまうのを回避する必要が発生した場合などは、 JavaScript等の記述側をシングルクオーテーション(単引用符)とするなり数値文字参照,文字実体参照で対応する事もできますし・・・。 なにより作成者としては統一しておく事により、 ソース内の検索,一括更新等にも便利・・・。 で、動作というか効果の違いは・・・、 ブラウザ次第です。 安定度が高いのは、全て二重引用符。 一応は規則違反の省略以外は、効果は変わらないというのが建前で・・・。 最後に規則としてですが、 >デフォルトでは、SGML規定はすべての属性値を二重引用符(ASCII十進34)または単引用符(ASCII十進39)のどちらかを用いて 囲うよう求めている。二重引用符で属性値が囲われる場合は単引用符がこの属性値の一部を成し得るし、逆の囲い方も可能である。属性値として引用符を表すことについて、著者は数値文字参照を用いることもできる。二重引用符は"で、単引用符は'である。二重引用符については文字実体参照 "を用いることもできる。 >属性の値を引用符で囲わなくてよいケースもある。属性値が、アルファベット(a-z and A-Z)、数字(0-9)、ハイフン(ASCII十進45)、ピリオド(ASCII十進46)、アンダースコア(ASCII十進95)、及びコロン(ASCII十進58)のみを含む場合である。本仕様は、引用符が省略可能な場合であっても省略しないことを推奨する。 以上、参考URLよりの引用ですが、 規則の上では二重引用符も単引用符も違いはなく、 一定の条件で省略が出来るというだけの様です。 尚、属性値はあくまで文字情報なので、それが数を表す物か等々はブラウザが解釈というか判断するので、 記述による数字,数値の違いはないので (例えばJavaScriptは数値と数字では振る舞いが異なる事がある。) その意味から作成者が数値という思いで属性値を記述しているのだとしても、 HTMLとしてはそれは数字でしかないので要注意です。
お礼
ご回答ありがとうございます. ダブルを使うように決めたいと思います. そして、少しずつですが、W3CのSGML規定を理解していきたいと思います.
- taseki
- ベストアンサー率66% (155/233)
下の投稿で、 「すべてダブルクォートで囲んだ方が良い」という部分、誤解を招きそうなので捕捉させていただくと、「すべてダブルクォートで囲んだ方が無難」ということが言いたかったのでした。 それと、uuingさんに反論するわけでは決してないのですが、数値であっても「+」プラス記号などが入っていると囲まなければならない、というように書いてあったような気がするのですが…、あまり確かな記憶ではないですが…。 いずれにしても私は、そのへん考えるのが面倒なので、すべて囲んでしまっています(HTMLとして正しいし、ブラウザも安全に解釈してくれる)。
- uuing
- ベストアンサー率25% (53/206)
基本的には,レンダリング結果に違いはありません。 HTML4の仕様では,valueに指定する文字列は「"(ダブルクォーテーション)」で囲むとしてありますが,数値に関しては,どちらでもよいとなっています。 Ex.: ○ value="hoge" X value=hoge ○ value="100" ○ value=100 また,プログラム言語としての慣習に従って,数値は囲みなし,文字列は囲むとする動きもあります。 Ex.: ○ value="hoge" X value=hoge X value="100" ○ value=100 いずれにしても,レンダリング結果に違いがありませんから,コードの見易さで使い分けるのがいいでしょう。 ちなみに私は数値は囲みなしでコーディングしてます。
お礼
ご回答ありがとうございます. 皆様のご回答を参考にするとダブルで囲む方が無難でいいように思えます.大変参考になります.
お礼
ご回答ありがとうございます. 皆様のご回答を参考にするとダブルで囲む方が無難でいいように思えます.大変参考になります. W3Cのルールを理解していきたいと思います.