10

重複の可能性:
JavaScript setAttribute vs .attribute =
javascript dom、「特別なプロパティ」を対属性として処理する方法は?

多くの場合、Usenetのようなフォーラムや場所では、(コードを批判するときに)言う代わりに、たとえば代わり​​にvar link = a.href使用する必要があると言われていvar link = a.getAttribute('href');ます。また、割り当てる場合は、その補完的なsetAttribute()を使用します。

彼らはそれが正しい方法だと言っています、私は間違っている、何とか何とか何とか...私は通常それらに何の注意も払っていません。そして、なぜ誰も本当の答えを出さないのかと尋ねると。

今、私はどちらの場合にどちらかを使用する方が適切であるかについて興味があります。

どのような場合にvar link = a.getAttribute('href');代わりに言うのがより適切でしょうvar link = a.hrefか?
そして、どのような場合に、識別子によってメンバーに直接値を割り当てるのではなく、setAttribute()を使用して割り当てる必要がありますか?すなわち: `a.href ='someURL';

4

2 に答える 2

13

誰かが練習を勧めるときはいつでも、彼らは常にアドバイスを正当化するべきです。

getAttributesetAttributeを使用しない理由は、8までのIEバージョンよりも、少なくともこれらのDOMメソッドの実装にバグがあります。また、ブラウザには、 get/setAttributeの使用に応じてDOMプロパティを変更する方法に違いがあります。

ただし、ブラウザーはDOMプロパティに関して非常に一貫しているため、DOMプロパティを使用すると、クロスブラウザーコードを作成する方がはるかに簡単です。唯一の注意点は、一部のブラウザは非標準のHTML属性のDOMプロパティを作成しないことですが、それらはすべてプロパティを使用して設定します。

追加のボーナスは、DOMプロパティへのアクセスがget/setAttributeへの関数呼び出しを使用するよりもはるかに高速であることです。

HTML5はこれらの動作の一部を標準化しようとしていますが、HTML5の問題は、それがW3C標準ではなく(決してそうではない可能性があります)、ブラウザーの機能を文書化するだけでなく(詳細または少ない)だけでなく、その作者が2つを区別せずに彼らに何をしてほしいか。したがって、一種の「構築時」の仕様とウィッシュリストとしては役立ちますが、標準としてはまったく役に立ちません。

2017年7月に編集

W3Cはしばらくの間HTML5仕様(番号付きバージョンと変更のリストを含む)を公開しており、WHATWGはHTMLおよびDOM標準もほぼ毎日更新して公開していますが、何が変更されたかは示されていません。どちらか一方が最終的にあきらめる可能性があります。

于 2011-09-02T03:27:58.820 に答える
1

obj.hrefコードがはるかに読みやすく機能するため、すべてのブラウザがサポートする標準属性の場合と 同様に、プロパティへの直接アクセスを使用します。

それが非標準の属性である場合、またはオブジェクトにデータを格納する手段として自分で作成した属性である場合は、を使用しますget/setAttribute()

常に使用する必要がある理由はわかりません。また、、、、などを使用しget/setAttribute()ているブラウザで問題が発生したことはありません。obj.idobj.hrefobj.classNameobj.value

于 2011-09-02T03:44:49.053 に答える