2009-10-07 9 views
13

グラフィックを作成するキャンバスタグがあります。私の行の各セクションでは、「マウスオーバー」を有効にして詳細を表示する「ドット」があります。CanvasタグのaddEventListener

このドットにイベントリスナーを追加しないと、すべて正常に機能します。

Firebugのは、私に警告している:s.addEventListenerは関数ではありません...

それは動的なイベントリスナーを作成することは可能ですか? (私はJavascriptを初めて使用しています)

+0

いくつかのコードは私たちを助けるでしょう... –

答えて

25

DOMオブジェクト(要素)以外にDOMイベントを添付することはできません。 canvasはDOM要素です。キャンバスに描画するものは描画されません。それらはimgのピクセルとしてキャンバスの一部になります。

キャンバス上の特定の点のクリックを検出するには、キャンバス要素にclickイベントをアタッチしてから、クリックイベントのx/y座標をキャンバスの座標と比較する必要があります。これはで答えた

:あなたはつもり基本構造を描くことがいる場合は、「How do I get the coordinates of a mouse click on a canvas element?

+0

ありがとうございました。 キャンバスに他のキャンバスを作成してイベントリスナーを追加することに興味がありましたが、表示されません(メインキャンバスの背後にある可能性があります)。 とにかく、マウスの位置と比較してイベントを検出する方法を探しています。 ありがとうございました:-) – kadiks

+0

[Easel js framework](http://easeljs.com)を使用すると、マウスのやり取りを描画された図形に簡単に追加できます – Neil

4

、私はあなたがインラインSVGを利用することが示唆されました。

この場合、すべてのsvg要素はDOM要素になり、それぞれに別々のイベントを割り当てることができます。