人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

javascriptの高階関数について

<script type="text/javascript">
function test1(a,func){
document.addEventListener(a,func,false);
}
test1("click",function(ev){
n=ev.screenX;
});

console.log(n);
</script>

といいう感じで取得した座標nを関数の外console.log(n)の位置で取得したいのですが
どうすればいいのでしょうか?

●質問者: はるぼぼ27
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● TransFreeBSD
ベストアンサー

http://jsfiddle.net/LRU4M/

function test1(a, func) {
 document.addEventListener(a, func, false);
}
test1("click", function (ev) {
 n = ev.screenX;
});

test1("click", function (ev) {
 console.log(n);
});

質問としては「関数の外で取得したい」というよりも(普通に取得出きるので)「関数の終了後に別の関数を実行したい」という事になるかと思った。
ちなみにこれの n は window.n になります。所謂グローバル変数です(グローバル変数にしなくてもOKです http://jsfiddle.net/LRU4M/2/ )。

以下蛇足
addEventListenerの仕様を読むと下記じゃないとダメかと思ったけど上記でOKっぽい。なんでだろう。
http://jsfiddle.net/8wWd3/1/

https://developer.mozilla.org/ja/docs/Web/API/EventTarget.addEventListener

ターゲットに対して 2 つ以上のイベントリスナーを登録するには、同じターゲットに対して、異なるイベントタイプ、あるいは、キャプチャパラメータを指定して addEventListener() を呼び出します。


質問者から

確かに関数の外で処理するんじゃなくて、関数内で処理する方向で考えた方が
いいような気がしてきました。
丁寧な回答ありがとうございます。
参考にさせてもらいます。


関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ