Skip to content

Instantly share code, notes, and snippets.

@suneo3476
Last active December 18, 2015 14:39
Show Gist options
  • Save suneo3476/5798763 to your computer and use it in GitHub Desktop.
Save suneo3476/5798763 to your computer and use it in GitHub Desktop.
【未解決】「パーフェクトJavaScript」p.288 リスト11.7 のコード。クリックした座標にdiv要素を移動させたい。しかしできない。取り出したmessageオブジェクトのtop, left属性は空… 何か間違えている?
<!DOCTYPE HTML>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>クリックした位置に要素を表示する</title>
</head>
<body>
<div id="foo" style="width: 2000px; height: 2000px; position: relative;">
<div id="message" style="position: absolute; background: lightgray; width: 100px;">Hello, World!</div>
</div>
<script>
var foo = document.getElementById('foo');
function getPosition(event) {
var x = event.clientX;
var y = event.clientY;
var r = event.target.getBoundingClientRect();
x -= r.left;
y -= r.top;
return { x: x, y: y };
}
foo.addEventListener('click', function (event) {
var message = document.getElementById('message');
if (event.target === message) {
// message自体がクリックされたときはなにもしない
return;
}
var pos = getPosition(event);
message.style.left = pos.x;
message.style.top = pos.y;
console.log(message.style.left+"\n");
console.log(message.style.top+"\n");
}, false);
</script>
</body>
</html>
@ishtaka
Copy link

ishtaka commented Jul 29, 2013

これで合っているのか不明ですが、
message.style.left = pos.x + 'px';
message.style.top = pos.y + 'px';
で動きました。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment