2016-04-13 7 views
1

次のClojureScriptコードがあり、クリックの座標を検出しようとしています。これまでのところ、私はクリックを認識するためのJavascriptアラートを得ることはできません。クリック座標を検出するClojure

私は、正確なセルをクリックさせるための関数を書かなければならないことは知っていますが、始めに、ページ上でクリックされた領域の座標を取得する方法を知る必要があります。

ありがとうございます!

(defn header [color text] 
    [:h1 
    {:style 
    {:color color 
    :background-color "blue"}} 
    text]) 

(defn Cell [] 
    [:div 
    {:style 
    {:width "40px" 
     :height "40px" 
     :float "right" 
     :margin-bottom "1px" 
     :margin-right "1px" 
     :background-color "grey" 
     :border "1px" "solid" "white"}}]) 

(defn home-page [] 
    [:div 
    [header "red" "Minesweeper"] 
    [:div 
    {:style 
    {:width "440px" 
     :height "440px"}} 
    (repeat 100 [Cell])]]) 

答えて

0

:styleと同じマップのインデントレベルで:onClickキーを入れてください。その値は、関数eを取得する関数でなければなりません。その後:

(let [coords (.getClientPosition e) 
     coords' {:x (aget coords "x") 
       :y (aget coords "y")}]) 

ここ:onClickイベントとその機能を持つハッシュマップの例です:

{ :href "#" 
    :onClick (fn [e] 
       (.preventDefault e) 
       (swap! counter inc))} 

で唯一の問題上記eを取得し、それを使用しています。それはflappybird example programから取られました。これが私のやり方です。

+0

Chrisありがとうございますが、私は、宣言されていないVar cljs-minesweeper.core/getClientPositionの使用と言うエラーが表示されています。 –

+0

さて、私は(js/getClientPosition)に切り替えようとしましたが、そのエラーは消えましたが、今は「宣言されていない変数cljs-minesweeper.core/eを使用しています」 –

+0

ああ、あなたの指示を誤解しています。私はそれを試してみましょう! –

関連する問題