i trying learn how use localstorage.
partly imitating, have written html generates page few tiles can drag , drop around page.
for example
<script type="text/javascript"> function drag_start(event){ var style = window.getcomputedstyle(event.target, null); var str = (parseint(style.getpropertyvalue("left")) - event.clientx) + ',' + (parseint(style.getpropertyvalue("top")) - event.clienty)+ ',' + event.target.id; event.datatransfer.setdata("text",str); event.stoppropagation(); } function drop(event){ var offset = event.datatransfer.getdata("text").split(','); var dm = document.getelementbyid(offset[2]); dm.style.left = (event.clientx + parseint(offset[0],10)) + 'px'; dm.style.top = (event.clienty + parseint(offset[1],10)) + 'px'; localstorage.setitem(dm.id,dm.style.left); event.preventdefault(); return false; } function drag_over(event){ event.preventdefault(); return false; } </script>
i think line 1 above beginning "localstorage" can save in localstorage
position after drop. [the current line mock example. later, when understand these things, store position, or offset.]
the part confused how retrieve position localstorage
when page being loaded.
say, going have 1 of tiles being
<div id="tile3" draggable="true" ondragstart="drag_start(event)"> <a href="http://www.link.somewhere"> link </a> </div>
i can tile has style="position:absolute"
, need retrieve offset localstorage
, set property of div
.
but how last part?
for saving use javascript command:
(assuming theposition array 2 values (x , y position))
localstorage.setitem("position", json.stringify(theposition));
on pageload can (assuming use jquery):
$(document).ready(function(){ var position = json.parse(localstorage.getitem("position")); $('#the-divs-id').css({'left': position[0], 'top': position[1]}); });
edit: added json stringify/parse array
if want use no jquery:
window.onload = setdiv(); function setdiv(){ var position = json.parse(localstorage.getitem("position")); document.getelementbyid(the-divs-id).style.left = position[0]; document.getelementbyid(the-divs-id).style.top = position[1]; }
edit: looping question:
$(document).ready(function(){ // loops trough divs the-class $('.the-class').each(function(){ // id current div // , corresponding position local storage var id = $(this).attr('id'), position = json.parse(localstorage.getitem(id)); // sets css values current div $(this).css({'left': position[0], 'top': position[1]}); }); });
Comments
Post a Comment