質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

2回答

195閲覧

javascriptでdiv内における座標をとるには

hood

総合スコア351

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2019/05/11 13:08

編集2019/05/11 13:20

###javascript でdiv内における座標をとるには
javascript でdiv内における座標をとるにはどうすればいいでしょう?

絶対的な座標(つまりbodyからとった座標)は以下のようにすればとれました。

javascript

1document.body.addEventListener("mousemove", function(e){ 2 var x = e.pageX; 3 var y = e.pageY; 4  //略 5});

しかし諸事情により、「あるdivの中における座標」を取得する必要がでてきました。divの一番左上をx=0,y=0とするような座標です。

これは実現できるのでしょうか?どうか些細な情報でもよせていただけるとありがたいです・・・

一応私が考えたのは以下のようなコードです。(ここでは「あるdiv」のidを"folder"としてます。)
これは動きませんでしたが、何か解決の手がかりになればと思いのせておきます・・・よろしくお願いします。

javascript

1document.body.addEventListener("load", function(e){//読み込んだときdivにリスナーをつける。 2 var f = document.querySelector("#folder");//あるdiv 3 f.addEventListener("mousemove", function (e) {//あるdivに座標センサをつける。しかし動かない。 4 var x = e.pageX; 5 var y = e.pageY; 6 //略 7 }); 8}); 9

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

こんにちは

ぱっと見で、思いつく修正としては、以下のようにするといかがでしょう?

修正前:

javascript

1var x = e.pageX; 2var y = e.pageY; 3```  4    5**修正後:** 6```javascript 7var x = e.offsetX; 8var y = e.offsetY;

投稿2019/05/11 13:38

jun68ykt

総合スコア9058

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hood

2019/05/12 03:54

回答ありがとうございます! ご指摘いただいた通り修正を試みたら上手くいきました! offsetについてももっと詳しく調べていきたいと思います。返す返す感謝いたします!
jun68ykt

2019/05/12 03:55

どういたしまして。解決されたようでよかったです ????
guest

0

「動かない」というのは、loadイベントが発火しないということですか?
loadイベントはdocumentではなくwindowにセットしないといけなかったと思うのですが。

div上の相対座標は、jun68yktさんが回答してくださっている方法で取得できると思います。

投稿2019/05/11 14:45

編集2019/05/11 14:51
sleepsheep

総合スコア310

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hood

2019/05/12 03:52

回答ありがとうございます! >loadイベントはdocumentではなくwindowにセットしないといけなかった。 まったくその通りでした。修正したら動くようになりました!これで前に進むことができます、改めて感謝いたします!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問