2

以下のコードで、明示的な Javascript バージョンのみが機能し、Jquery バージョン (コメントアウト) が機能しないのはなぜですか?

 <html>
     <head>
         <title>Canvas Tutorial</title>
         <script type="text/javascript" src="./jquery-1.6.3.min.js"></script>
     </head>
     <body>
         <canvas id="can" width="150" height="150">Fallback</canvas>
         <script type="text/javascript">
             //var can = $("#can").get();
             var can = document.getElementById("can");
             var ctx = can.getContext('2d');
         </script>
     </body>
 </html>

という通知を受け取り続けています。

TypeError: 'undefined' is not a function (evaluating 'can.getContext('2d')')
4

2 に答える 2

2

.getパラメータを渡さないと、配列のような構造が返されるためです。次を使用する必要があります。

var can = $("#can").get(0);

または速記:

var can = $("#can")[0];

DOM要素参照を取得します。

フィドル

ドキュメントから:

パラメータがない場合、.get()はすべての要素を返します。[...]

一致したすべてのDOMノードは、この呼び出しによって返され、標準の配列に含まれます。

テスト

>>> var can = $("#can").get(); console.log(can instanceof Array);
true
>>> var can = $("#can").get(0); console.log(can instanceof Array);
false
于 2012-08-21T20:39:15.210 に答える
0

jQuery ID セレクターを使用して、ID を持つキャンバス要素を選択しcanます。これにより、jQuery オブジェクトが得られます。すべての jQuery オブジェクトは配列としてマスカレードされるため、標準の配列逆参照を使用して、基になる DOM 要素を取得できます。(参照: http://api.jquery.com/get/ )

var can = $("#can")[0];
var ctx = can.getContext('2d');

やってみて!

于 2012-08-21T20:41:38.723 に答える