4

次のような要素がある場合:

var c = document.createElement('a');

次に、次のようにするだけで属性名を追加できます。

c.name = "a1";

setAttribute()ドット表記を使用できる場合の目的は何ですか?

4

4 に答える 4

2

属性はプロパティと同じではありません。

属性は通常、HTML で作成され、 のオブジェクト メンバーになりますelement.attributes。対応するプロパティを設定するものもあります。

プロパティを変更すると更新される属性と、更新されない属性があります。たとえば、.value プロパティは入力要素の属性を変更しません。または、カスタム プロパティがカスタム属性になりません。

ほとんどの場合、おそらくプロパティを設定したいでしょうが、属性を変更したい場合は、場合によっては次を使用する必要がありますsetAttribute

于 2012-08-15T22:32:36.577 に答える
2

どちらもできると誰が言った?

まあ、大丈夫です。しかし、まじめな話、「誰が言ったの?」というのは、たいていはそれに帰着するからです。

当初は、Javascript をサポートする最初の Web ブラウザである Netscape Navigator 2 がありました。実際、Netscape Enterprise Server でサーバー側で使用される数か月前に、Javascript (ベータ版では「Livescript」と呼ばれる) をサポートする最初のものでした。しかし、それは 1995 年のことであり、「java」という単語を何にでも入れることは、残りの時間をコーヒー卸売業者の周りで混乱している技術ジャーナリストから約 20,000 コラム インチを引き出す確実な方法だったため、すぐに「Javascript」と改名されました。プレス リリースとプロモーション schwag だった)。

当時のオブジェクト モデルは非常に小さく、数日でモデル全体を頭の中に収めることができるほど学習できました。ほとんどの要素では、実際にはあまり多くのことを行うことができませんでした。<select id="selId" name="selName">多くのことが非常に厄介でした ( todayの現在の値を見つけることができる場合document.getElementById('selId').value や、他のいくつかの方法では、document.forms[0]["selName"].options[document.forms[0]["selName"].selectedIndex].value.

その後、IE3 には Javascript も含まれるようになりました。NN 3 では、画像のsrc属性を変更できるようになりました。ブラウザ戦争が本格的に始まった。多くの退役軍人は、今でも自分のしたことの記憶に悩まされています。

ブラウザーのドキュメント モデルを改善するための本当に明白な方法は、プロパティによって反映されるものをますます多くすることでした。できれば、読み取り専用ではなく書き込み可能にすることです。次善の策は、何かを変更する方法を他のブラウザーよりも少し単純で覚えやすいものにすることでした (そうすれば、あなたのブラウザーの最新バージョンでは機能し、ライバルのブラウザーでは機能しなかった Web ページがより多く作成される可能性があります)。

急速な開発ペースを維持することで、Netscape が新しいミドルウェア プラットフォームを開発し、Microsoft と Apple の立場を無意味にすることは明らかでしたが、陪審員は yahoo と alta-vista のどちらが検索および/または Web を支配するディレクトリ。(テクノロジーについて長期的な予測をしないでください)。

make-script-able-to-do-to-do-everything-to-everything の一般的な傾向の中で、多くのプロパティは、対応する属性があった場合にその名前が付けられました。これは結局のところ、非常に賢明な方法です。

ただし、これは少し矛盾しています。たとえば、属性に対応するほとんどのプロパティは、文字列値を文字列値に単純な方法でマップします。URI の一部を反映するプロパティを持つより豊富なオブジェクトを提供するアンカー要素の属性など、1 つまたは 2 つがそうではありませんhref(ほとんどの場合、make-script-able-to-do-everything-to より前の初期の頃から利用可能だったためです)。 -すべての)。これは (URI を分解したい場合) 便利ですが、どれがどれであるかを判断する良い方法がないため、面倒です。

この最盛期には、DHTML と呼ばれるものと dHTML と呼ばれるものがありました。これらは、まったく互換性のない方法でほぼ同じことを行う 2 つの方法でした。

また、javascript では新しいプロパティを何にでも追加できるようにするのが緩く、HTML では新しい属性を追加できるという事実もあります (厳密にどの標準に準拠しているかによって議論の余地がありますが、これはブラウザー戦争であり、新しい独自の属性はブラウザによって 4 分ごとに追加されているようです)。プロパティが特定のブラウザに実際に影響を与えるかどうかを知ることは面倒でした。

一方、遠く離れた国際標準コンソーシアムでは、XML と呼ばれるものが開発されていました。あらゆる種類の属性を持つあらゆる種類の要素をあらゆる種類の方法で追加できます。スクリプトでこれを処理する方法も追加されました。

要素の属性を現在よりも一貫して変更する方法が必要でした。また、HTML の将来のバージョンはすべて XML アプリケーションになることが明らかだったので (技術について長期的な予測を立てないでください)、それを行うことは理にかなっています。少なくとも 2 つの間で比較的一貫している必要があります。

また、他の誰よりも人気のあるブラウザーを使用しても、次のビル ゲイツ (現在のビル ゲイツでさえも) になる人はいないことにも気づきました。 -他の男ができないことはより明白になりました。

W3C DOMはますます最終化され、ますますサポートされるようになりました。これにより、属性を設定するより一貫した方法が得られました。それはより冗長でしたが、何をしようとしているのかを一貫して知ることができ、ドキュメントの一部を作成、コピー、変更、および削除することもより強力でした.

しかし、対応するプロパティを設定するだけで多くの属性の便利な省略形が残っているという事実とともに、可能な限り古いサイトを維持する必要があったため、人々はそれを使用することをやめませんでした. それでも、DOM アプローチはすべてのブラウザーである程度サポートされているため、ブラウザー間の一貫性が大幅に向上します。

そして、半分の開発者がとにかく JQuery を使い始めました。

于 2012-08-15T23:20:05.697 に答える
1

これは、カスタム属性を作成するためのものです。

作るのは大丈夫ですがel.name='aaa';

あなたがそれを作るならば、el.customsttr='a'それは働きません。

-(以下で指摘するように、すでに定義されている場合を除く)

http://jsfiddle.net/sXdHB/

応用:

たとえば、attr'src'のimgがある場合、カスタム属性' big_src'を追加し、それをスクリプトで読み取って、より大きなものを表示することができます。

于 2012-08-15T22:19:15.160 に答える
1

getAttribute/setAttributeDOM 要素を操作していることを明確にするために使用します。あいまいさを最小限に抑えることはプラスです。

ただし、属性についてquirksmode.orgは次のように述べています。

属性

血まみれの混乱。次の順序で属性に影響を与えてみてください。

  1. x.id や y.onclick などの特定のプロパティを取得または設定してみてください。
  2. 特定のプロパティがない場合は、getAttribute() または setAttribute() を使用します。
  3. それでもうまくいかない場合は、下の表にある他のメソッドまたはプロパティを試してください。ただし、ほとんどのブラウザには恐ろしい非互換性パターンがあります。
  4. 属性[]は避けてください。それは何よりも悪いです。
于 2012-08-15T22:29:07.577 に答える