2016-06-27 14 views
0

私は時計の作成に使用したページに一連のキャンバス要素を持っています。これらの変数のそれぞれは、デフォルト値を持つ多くの変数を持っています。これらの変数は、いずれの時点でも定義されていません。 (以下は私が変数の例として使用していますが、他のすべての変数でも同様です)変数amをtrueに変更しない限り、変数amはデフォルトでfalseです。ここに私の最初のクロックです:document.getElementById(id)は、未定義の変数がすべて含まれているオブジェクトを返します。

<canvas id="piechart0" width="200" height="200"></canvas> 

私がもし「piechart0.amが真==」、AM用画像とボタンが表示されるようにそれを作るためにしようとしていますし、それをもし「piechart0.pm == false」に消える。しかし、私は次の操作を実行したとき:piechart0を

<script> 
    var clock = document.getElementById("piechart0"); 
    var am = clock.am; 
    if (am) { 
     ........ 
</script> 

を、正しく「キャンバス#のpiechart0」としてクロックを識別しますが、clock.amと新しいのvar午前の両方ではなく、真または偽のいずれかよりも、「未定義」です実際には.amと同じです。スクリプトが正しい要素をつかんでいるときに、すべての変数が未定義となるのはなぜですか?/私はここで間違っていますか?

編集:愚かな間違い、私はキャンバスに描くことを指示する変数を追跡するために別のクラスを使用していました。私がアクセスしようとしていたのはこのクラスの変数なので、canvas.amは未定義となっていました。解決済み

+0

これは動作するはずです。問題はおそらくあなたが含まれていないコードの他の場所です。質問に完全な自己完結型の例が含まれていると、より成功します。 –

+1

どこに 'am'を置いていますか?現在持っているコードのどれも要素にその属性を追加していることを示していません。なぜそれが今は未定義であるのが理にかなっています。 – zero298

+1

''要素に 'am'プロパティがあると思いますか?また、DOM要素にカスタムプロパティを追加することは、私が思うとまだ眉をひそめています。 –

答えて

0

出力はそのままです。

クロック変数がキャンバスHTMLオブジェクトを参照しています。ここに投稿した内容から、そのキャンバスのam属性を実際に定義していません。したがって、clock.amは未定義です。

その場合は

console.log("Should be the canvas object:: " + clock); 
console.log("Did not define this, so it should output undefined:: " + clock.am); 
console.log("Did define this as 200, so it should output 200:: " + clock.width); 

あなたが表示された幅が表示されますが、定義されませんしています。希望は分かります。

関連する問題