6

私はちょうどこのようなものに出くわしました...

function(element) {
  ...
  var attributes = element.attributes;
  for (var index = 0, length = attributes.length; index < length; index++) {
    var attribute = attributes[index];

    // what is ".specified"?
    if (attribute.specified) {
      ...
    }
  }
}

DOM Element の W3C 仕様、Element インターフェイスを見ていますが、specifiedどこにも見当たりません。

http://www.w3.org/TR/DOM-Level-3-Core/core.html#ID-745549614

とはattribute.specifiedどういう意味ですか? それは何を表していますか?仕様のどこに定義されていますか?

4

3 に答える 3

3

<img src="kittens.jpg">. 属性はsrcで、その値はkittens.jpgです。DOM 要素は一般的な定義です。実際の属性は、使用されている実際の言語 (XML、HTML など) によって指定されます。

指定 = 属性には明示的な値が割り当てられています。たとえば、値kittens.jpgが指定されているため、src属性が指定されていますが、

<input type="checkbox" checked />

チェックされた属性は PRESENT ですが、SPECIFIED ではありません。

于 2013-01-23T20:59:26.193 に答える
-1

ブラウザーごとに DOM の実装が異なります。ユーザーではなく実装がこの属性を担当していることに注意してください。ただし、ユーザーは属性のデフォルト値を変更できます。

Chrome 54.0.2840.71 に関しては、すべての attribute.specified を true にします。DOM 仕様にあるかどうか、値があるかどうかのいずれかです。たとえば、指定された属性__testは、Chrome (バージョン 54) では常に true です。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <div __test></div>
    <script>
        var div=document.querySelector("div");
        var attributes = div.attributes;
        var attr_test=attributes[0];
        attr_test.specified=false;// "specified" is not writable and Setting it silently fails.
        console.log(attr_test.specified);
    </script>
</body>
</html>

だから私は「衰退に向かっている」ことに同意します。

"attribute.specified" は、DOM level3 と DOM level2 の仕様で異なります。

1.同点

この属性がインスタンス ドキュメントで明示的に値を与えられた場合は true、それ以外の場合は false。アプリケーションがこの属性ノードの値を変更した場合 (最終的にデフォルト値と同じ値になったとしても)、true に設定されます。

2.相違点
「DOM-Level2」では「attribute.specified」が真か否かの判定条件がより複雑になります。
「DOM-Level3」と言う

実装では、他のスキーマのデフォルト値を持つ属性を同様に処理できますが、アプリケーションは Document.normalizeDocument() を使用して、この情報が最新であることを保証する必要があります。

https://www.w3.org/TR/DOM-Level-3-Core/core.html#ID-637646024https://www.w3.org/TR/DOM-Level-2-Core/specified of type boolean, readonlyで検索core.html#ID-862529273


于 2016-11-11T14:49:02.543 に答える