mwinter: here's my full code.
Code:
<html>
<head>
<script type="text/javascript">
var ie = document.all;
var ns = document.getElementById && !ie;
var x,y;
var dobj;
var isdrag = false;
function contDrag(e){
if(isdrag){
dobj.style.left = ns ? tx + e.clientX - x : tx + event.clientX - x;
dobj.style.top = ns ? ty + e.clientY - y : ty + event.clientY - y;
return false;
}
}
function initDrag(e){
topelements = ns ? "HTML" : "BODY";
fobj = ns ? e.target : e.srcElement;
while(fobj.tagName != topelements && fobj.className != "drag"){
fobj = ns ? fobj.parentNode : fobj.parentElement;
}
if(fobj.className == "drag"){
isdrag = true;
dobj = fobj;
tx = parseInt(dobj.style.left + 0,10);
ty = parseInt(dobj.style.top + 0,10);
x = ns ? e.clientX : event.clientX;
y = ns ? e.clientY : event.clientY;
document.onmousemove = contDrag;
}
var cart = document.getElementById("cart");
}
function getElementsById(sId)
{
var outArray = new Array();
if(typeof(sId)!='string' || !sId)
{
return outArray;
};
if(document.evaluate)
{
var xpathString = "//*[@id='" + sId.toString() + "']"
var xpathResult = document.evaluate(xpathString, document, null, 0, null);
while ((outArray[outArray.length] = xpathResult.iterateNext())) { }
outArray.pop();
}
else if(document.all)
{
for(var i=0,j=document.all[sId].length;i<j;i+=1){
outArray[i] = document.all[sId][i];}
}else if(document.getElementsByTagName)
{
var aEl = document.getElementsByTagName( '*' );
for(var i=0,j=aEl.length;i<j;i+=1){
if(aEl[i].id == sId )
{
outArray.push(aEl[i]);
};
};
};
return outArray;
}
function termDrag(e){
isdrag = false;
with(document){
targ = getElementById("cart");
//obj = getElementById("drag");
space = getElementById("coor");
next = getElementById("nexcoor");
}
var obj = getElementsById("drag");
targX = parseInt(targ.offsetLeft - 8);
targY = parseInt(targ.offsetTop - 8);
targH = parseInt(targ.offsetHeight);
targW = parseInt(targ.offsetWidth);
targXpW = targX + targW;
targYpH = targY + targH;
for(var i = 0;i < obj.length;i++){
objX = parseInt(obj[i].offsetLeft);
objY = parseInt(obj[i].offsetTop);
objH = parseInt(obj[i].offsetHeight);
objW = parseInt(obj[i].offsetWidth);
objXpW = objX + objW;
objYpH = objY + objH;
}
if(objX > targX && objY > targY && objX < targXpW && objY < targYpH){
next.innerHTML = "Got It!!!";
} else {
next.innerHTML = "";
}
}
document.onmousedown = initDrag;
document.onmouseup = termDrag;
</script>
<style type="text/css">
div.drag {
width: 100px;
height: 100px;
background-color: red;
position: relative;
z-index: 200;
}
div.drag:active {
cursor: move;
}
div.cart {
width: 500px;
background-color: green;
height: 350px;
position: relative;
left: 300px;
}
</style>
</head>
<body>
<div id="drag" class="drag">television</div>
<div id="drag" class="drag">table</div>
<div id="drag" class="drag">sink</div>
<div id="cart" class="cart"></div>
<div id="coor"></div>
<div id="nexcoor"></div>
</body>
</html>
That shall be enough to tell you what I am trying to do.
The problem I am facing with this is the script displays "Got It!!!" only when the first div is dropped in the target.
Bookmarks