2012-01-13 6 views
4

さまざまなJavaScriptオブジェクトや、JavaScriptで作成されたHTML要素の機能をすべて列挙したいと考えています。たとえば、次はChromeとFirefoxの両方で素晴らしい作品:JavaScriptオブジェクトの関数を列挙しますか?

<html> 
    <body> 
    <script> 

     var object = document.createElement("select"); 

     for(var prop in object) 
     { 
      document.body.innerHTML += "" + prop + "; // " + typeof object[prop] + "<br/>"; 
     } 

    </script> 
    </body> 
</html> 

これは、そのオブジェクトに利用可能な機能、例えば含むオブジェクトのすべてのプロパティを出力します

... 
insertAdjacentHTML; // function 
insertAdjacentText; // function 
insertAdjacentElement; // function 
getAttribute; // function 
setAttribute; // function 
removeAttribute; // function 
getAttributeNode; // function 
... 

しかし、これはで動作しません。 IE9では、文字列/数値/オブジェクトのプロパティだけが得られ、関数のプロパティは決してありません。

私の質問は、どのように関数名がIE9のオブジェクトによってどのようにエクスポートされるのかを実行時に見つけることができますか?

事前に感謝します。

UPDATE:Doctypeを追加すると、期待どおりに機能します。

<!DOCTYPE html> 
    <body> 
    <script> 

     var object = document.createElement("select"); 

     for(var prop in object) 
     { 
      document.body.innerHTML += "" + prop + "; // " + typeof object[prop] + "<br/>"; 
     } 

    </script> 
    </body> 
</html> 
+0

はあなたにIE9でこの文句を言わない仕事は...私はあなたのコードの例を作ってください。[リンク](http://jsfiddle.net/MPADp/1/) ie9で正常に動作します。あなたが直面している問題は、ie8に表示されます。 – alex

答えて

4

このコードは私にとってはうまく見え、IE9ではうまくいきます。

http://jsbin.com/ivukus/edit#preview

+0

Aha!ありがとう、私はそれを稼働させるために<!DOCTYPE html>を追加しなければならなかった、歓声:) – QAZ

+0

それは私にできるようにする前に、数分待つ必要があります:) – QAZ

2

あなたがDOCTYPEを指定した場合、これはIEで正常に動作します。 DOCTYPEがなければ、IEはQuirks Modeでレンダリングします。これはIE 5.5の動作であり、IEのJavaScriptサポートに大きな影響を与えます。

<!doctype html> 
<html> 
    <body> 
    <script> 

     var object = document.createElement("select"); 

     for(var prop in object) 
     { 
      document.body.innerHTML += "" + prop + "; // " + typeof object[prop] + "<br/>"; 
     } 

    </script> 
    </body> 
</html> 

結果:

form; // object 
length; // number 
multiple; // boolean 
name; // string 
options; // object 
selectedIndex; // number 
size; // number 
type; // string 
value; // string 
dataFld; // string 
dataFormatAs; // string 
dataSrc; // string 
add; // function 
item; // function 
namedItem; // function 
remove; // function 
. 
. 
. 
関連する問題