Lecture Notes for CS 142
Fall 2010
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);
this.element.onmousedown = this.wrap(this, "mouseDown");
}
Dragger.prototype.wrap = function(obj, method) {
return function(event) {
obj[method](event);
}
}
Dragger.prototype.mouseDown = function(event) {
this.oldMoveHandler = document.body.onmousemove;
document.onmousemove = this.wrap(this, "mouseMove");
this.oldUpHandler = document.body.onmouseup;
document.onmouseup = this.wrap(this, "mouseUp");
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.onmousemove = this.oldMoveHandler;
document.onmouseup = this.oldUpHandler;
}
<body>
<table>
<tr>
<td>xyz</td>
</tr>
</table>
</body>
setTimeout("myfunc()", 50);
id = setInterval("myfunc()", 50);
clearInterval(id);