0

入力タグを動的に作成していますが、次の属性があります。

<input id='beep' id2='boop'></input>

最初のものは、以下の 2 つの構文のいずれかで参照できますが、

var tag = document.getElementById("beep");
alert(tag.id);
alert(tag.attributes["id"]);

カスタム属性id2に関しては、後者を使用せざるを得ません。なんで?

var tag = document.getElementById("beep");
alert(tag.id2); // doesn't work - I get *undefined*
alert(tag.attributes["id2"]);
alert(tag["id2"]); // doesn't work - I get *undefined*
4

3 に答える 3

4

ここでは、HTML と DOM の 2 つを混在させています。HTML にはタグと属性の概念がありますが、DOM にはノードと属性の概念があり、似ているように見えますが、(少なくともその核心では) 独立した技術です。

DOM 要素の作成時に、公式の HTML 属性のみ (すべてではないかもしれません) が DOM 属性にマップされます。このプロセスで も変更される可能性があります。DOM ノードで使用できる属性は、DOMおよびHTML DOM 仕様で定義されています。

value要素の属性の例input:

要素のtype属性が"text""file"またはの値を持つ場合"password"、これは対話型ユーザー エージェント内の対応するフォーム コントロールの現在の内容を表します。この属性を変更すると、フォーム コントロールのコンテンツが変更されvalueますが、要素の HTML 属性の値は変更されません。type要素の属性の値が、、、、、またはの場合"button"、これは要素の HTML 値属性を表します。HTML 4.01 の value 属性の定義を参照してください。"hidden""submit""reset""image""checkbox""radio"

または、DOMclassにある HTML 属性:className

要素のclass属性。"class"この属性は、多くの言語で公開されているキーワードと競合するため、名前が変更されました。classHTML 4.01の属性定義を参照してください。

経由ですべての HTML 属性にアクセスできます.getAttribute

于 2013-01-29T18:33:31.843 に答える
4

標準属性のみが関連するプロパティを持ち、id2非標準であるため、関連付けられたプロパティはありません。

于 2013-01-29T18:29:11.567 に答える
1

<input data-id2="boop" />一部のブラウザはあなたがしようとしていることをサポートしていますが、カスタム属性を使用して次のようにアクセスするため、正確にはわかりません。

var tag = document.getElementById("beep");
var id2 = tag.dataset.id2

要素データセットについては、 を参照してください

于 2013-01-29T18:30:48.050 に答える