0

HTML:

<img src="person.png" id="person"/>

JavaScript:

var object0 = document.getElementById("person");
var i = 0;

context.drawImage(object0, object0X, object0Y);// this works

context.drawImage("object" + i, object0X, object0Y);// this doesn't

エラーメッセージ:

Could not convert JavaScript argument arg 0 [nsIDOMCanvasRenderingContext2D.drawImage]

エラーが発生する理由は、文字列ではなくDOM要素でなければならないということです。画面上の複数のオブジェクトに影響を与えることができるように、for ループを実行する必要があるため、何らかの連結を行う必要があります。私が使用できる parseInt() に似たものはありますか?

4

3 に答える 3

2

文字列リテラルを使用して変数を参照すると、文字列リテラルに評価されるため、エラーが発生します。

var Object0 = document.getElementById('person'); // typeof 'object'
console.log(typeof ('Object' + i)); // This will output 'string' to the console

代わりに、プロパティが DOM 要素への参照を保持するオブジェクトを作成できます。

var images = {
    Object0: document.getElementById('person')
    // and so forth...
};

ブラケット表記を使用して各プロパティを参照できるため、これは非常に便利です。これで、for ループを使用してプロパティをループし、値にアクセスできます。そのようです:

for (var i = 0; i < images.length; i++) {
    context.drawImage(images['Object' + i], Object0X, Object0Y); // This works
    console.log(typeof images['Object' + i]); // This will output 'object' to the console
}
于 2012-04-18T18:52:35.383 に答える
0

私はあなたがやりたいと思う:

context.drawImage(document.getElementById("object" + i), object0X, object0Y);

IDobject0が 、object1object2...の画像要素が必要です。

于 2012-04-18T17:26:05.657 に答える
0

文字列を介して JS 変数を参照することはできません。エラーは、画像への参照ではなく、文字列を drawImage 関数に渡すことから発生します。変数を関数に渡すだけで機能します。

于 2012-04-18T17:30:32.947 に答える