Lecture Notes for CS 142
Spring 2012
John Ousterhout
<div onclick="mouseClick('id42');">...</div>
element.onclick = mouseClick;
<div onclick="mouseClick(event);">
element.onclick = mouseClick;
function mouseClick(evt) {
...
x = evt.clientX;
...
}
element.onclick = mouseClick;
function mouseClick() {
...
x = window.event.clientX;
...
}
<body>
<div id="div1" onmousedown="mouseDown(event);"
onmousemove="mouseMove(event);"
onmouseup="mouseUp(event);">Drag Me!</div>
<script type="text/javascript">
//<![CDATA[
isMouseDown = false;
function mouseDown(event) {
oldX = event.clientX;
oldY = event.clientY;
isMouseDown = true;
}
function mouseMove(event) {
if (!isMouseDown) {
return;
}
element = document.getElementById("div1");
element.style.left = (element.offsetLeft +
(event.clientX - oldX)) + "px";
element.style.top = (element.offsetTop +
(event.clientY - oldY)) + "px";
oldX = event.clientX;
oldY = event.clientY;
}
function mouseUp(event) {
isMouseDown = false;
}
//]]>
</script>
</body>
<body>
<div id="div1">Drag Me!</div>
<div id="div2">Drag Me Too!</div>
<script type="text/javascript" src="dragger.js"></script>
<script type="text/javascript">
//<![CDATA[
new Dragger("div1");
new Dragger("div2");
//]]>
</script>
</body>
function Dragger(id) {
this.isMouseDown = false;
this.element = document.getElementById(id);
var obj = this;
this.element.onmousedown = function(event) {
obj.mouseDown(event);
}
}
Dragger.prototype.mouseDown = function(event) {
var obj = this;
this.oldMoveHandler = document.body.onmousemove;
document.body.onmousemove = function(event) {
obj.mouseMove(event);
}
this.oldUpHandler = document.body.onmouseup;
document.body.onmouseup = function(event) {
obj.mouseUp(event);
}
this.oldX = event.clientX;
this.oldY = event.clientY;
this.isMouseDown = true;
}
Dragger.prototype.mouseMove = function(event) {
if (!this.isMouseDown) {
return;
}
this.element.style.left = (this.element.offsetLeft
+ (event.clientX - this.oldX)) + "px";
this.element.style.top = (this.element.offsetTop
+ (event.clientY - this.oldY)) + "px";
this.oldX = event.clientX;
this.oldY = event.clientY;
}
Dragger.prototype.mouseUp = function(event) {
this.isMouseDown = false;
document.body.onmousemove = this.oldMoveHandler;
document.body.onmouseup = this.oldUpHandler;
}
<body>
<table>
<tr>
<td>xyz</td>
</tr>
</table>
</body>
setTimeout("myfunc()", 50);
token = setInterval("myfunc()", 50);
clearInterval(token);