2017-06-08 7 views
1

属性が定義されていないと、指定された値がfalseを返すと誰かが教えてくれました。 xms属性には定義がありませんでしたが、指定されたものはtrueを返します。指定された状況が偽を返しますか?DOM指定プロパティ戻り値true

<!DOCTYPE html> 
<html> 
<body> 

<p>Click the button find out if the button has an onclick attribute specified.</p> 

<button onclick="myFunction()" class="" xms >Try it</button> 

<p id="demo"></p> 
<p id="demo2"></p> 
<p id="demo3"></p> 
<script> 
function myFunction() { 
    var btn = document.getElementsByTagName("BUTTON")[0]; 
    var x = btn.getAttributeNode("onclick").specified; 
    document.getElementById("demo").innerHTML = x; 

     var y = btn.getAttributeNode("class").specified; 
    document.getElementById("demo2").innerHTML = y; 

     var z = btn.getAttributeNode("xms").specified; 
    document.getElementById("demo3").innerHTML = z; 

} 
</script> 

</body> 
</html> 

答えて

0

属性値を取得し、それらがundefinedと等しいかどうかを確認してください。

var x = btn.getAttributeNode("onclick"); 
if (x !== undefined) 
    document.getElementById("demo").innerHTML = x; 

EDIT:ノードが存在し、それは私が3警告コマンドを追加

var a = btn.getAttributeNode("xms").specified; 
var b = btn.getAttributeNode("xms").nodeValue; 
if (!a || a===undefined || b=='') //It's like false, because the node doesn't exists or its value is empty 
+0

重要な問題はz = trueですが、xmsは定義されていません。 –

+0

@AndyTang問題は定義されていませんが、ボタンタグに表示されるので問題は存在すると思います。 多分それを確認する必要があるかもしれないので、まずそれが存在するかどうかチェックし、その値をとり、それが未定義か空文字列かどうかをチェックしてください。そうであれば、それを誤った反応のように扱うべきです。 'var a = btn.getAttributeNode(" xms ")。指定; ' – Truerick

+0

編集済みの回答... – Truerick

0

真の価値を持っていると、以下のような結果を得た場合 を確認するには。

var z = btn.getAttributeNode("xms").specified; 
alert (btn.getAttributeNode("xms").nodeName); //display xms 
alert (btn.getAttributeNode("xms").nodeValue); //display nothing 
alert (btn.getAttributeNode("xms").innerHTML); //display undefined 
document.getElementById("demo3").innerHTML = z; 
0

xmsがタグに存在するので、指定されたものとみなされます。

実際には、値のないタグのDOM属性は、デフォルトでは、hiddenまたはchecked属性のように、値がtrueのブール値属性とみなされます。

0

指定された状況はfalseを返しますか?

ブラウザでは、決してありません。 The DOM living standard states it explicitly

readonly属性ブール値が指定されています。 //役に立たない。常に真を返す

それは何ですか?他の文脈では、XML文書はDOM APIを介してアクセスされ、通常DOM 3仕様がここに適用されます。

DOM 3 says

属性が明示的にインスタンス文書に値を与えられていなかったが、文書に関連付けられたスキーマによって提供されるデフォルト値、属性ノードがfalseに指定されたセットを使用して作成されている場合。

これは、要素の属性にデフォルト値が設定されているXMLスキーマに関連するものです。

ブラウザでは、プロパティを使用しようとするWebページが存在し、true値を返さなかった場合にJavaScriptが壊れてしまうため、specifiedプロパティは下位互換性のために存在します。

関連する問題