[JS] Drag and Drop DIV daarna meteen opslaan
Ik heb wat divjes in de db staan en die zet ik op een pagina. Iedere gebruiker heeft zo'n pagina. Dat werkt prima.
Nu wil ik dat zij die blokjes/div's kunnen verplaatsen, en de positie daarna wordt opgeslagen in de db. Met het bekende drag en drop systeem. Is dit mogelijk in JS?
Thnx! peter
Ja, kijk maar naar iGoogle. Het is alleen geen beginnersscriptje, dus als je nog nieuw bent met JS zou ik eerst iets anders gaan maken.
Hmm.. Is er niet iets simpels? Die divjes worden geplaatst door een while loopje. ..
Ja, dat plaatsen is het probleem niet. Het onthouden ook niet. Maar het verslepen en zorgen dat ze zich automatisch opnieuw arrangeren als je er eentje tussenuit haalt is verdomd lastig.
Hier wordt anders wel een mooi voorbeeld gegeven :)
Edit:
Dubbelpost :S
Gewijzigd op 01/01/1970 01:00:00 door - -
Nee dat is niet wat ik zoek. Ik moet hem op iedere pixel neerkunnen gooien..
@Jan Koehoorn
Ik hoef ze niet te arrangeren.. Ze moeten ze overal op de pagina neer kunnen zetten. Maakt niet uit of er eentje tussenuit gaat, of er een overheen ligt.
EDIT:
@Herjan
Ja, maar nu wil ik ze ook nog naar rechts kunnen slepen, en veeeeeeel lager.
Gewijzigd op 01/01/1970 01:00:00 door petervw
Dat kan ook hoor. Maar dit was een voorbeeldje voor als je ze ook nog netjes wilde rangschikken ;)
EDIT:
Ja dat zoek ik! De absolute. Hoe kan ik het dan inelkaar zetten? Van dat snap ik echt niet veel...
Gewijzigd op 01/01/1970 01:00:00 door petervw
Twee vragen nu:
1. Nu krijgt iedere div een naam, het id wat bekend is bij dat divje, en hoe kan ik dat meegeven?
2. Hoe kan ik een query uitvoeren in javascript??? Ik wil tx en ty gebruiken..
De code:
<script type="text/javascript">
<!-- Begin
var ie=document.all;
var nn6=document.getElementById&&!document.all;
var isdrag=false;
var x,y;
var dobj;
function movemouse(e)
{
if (isdrag)
{
dobj.style.left = nn6 ? tx + e.clientX - x : tx + event.clientX - x;
dobj.style.top = nn6 ? ty + e.clientY - y : ty + event.clientY - y;
return false;
}
}
function selectmouse(e)
{
var fobj = nn6 ? e.target : event.srcElement;
var topelement = nn6 ? "HTML" : "BODY";
while (fobj.tagName != topelement && fobj.className != "dragme")
{
fobj = nn6 ? fobj.parentNode : fobj.parentElement;
}
if (fobj.className=="dragme")
{
isdrag = true;
dobj = fobj;
tx = parseInt(dobj.style.left+0);
ty = parseInt(dobj.style.top+0);
x = nn6 ? e.clientX : event.clientX;
y = nn6 ? e.clientY : event.clientY;
document.onmousemove=movemouse;
return false;
}
}
document.onmousedown=selectmouse;
document.onmouseup=new Function("isdrag=false");
// End -->
</script>
ZO AANROEPEN:
in veel html elementen hoef je alleen class='dragme' erin te zetten. Nu wil ik de name dus ook meegeven. Hoe kan dat?
Gewijzigd op 01/01/1970 01:00:00 door petervw