Código:
**Actualización** me faltó poner el script completo y sin mis comentarios. Disculpen.if (document.getElementById && document.getElementsByTagName) { if (window.addEventListener) window.addEventListener('load', der, false); else if (window.attachEvent) window.attachEvent('onload', der); } function der() { var moveIt = document.getElementById('moveit'); moveIt.onclick = moveToRight; function moveToRight() { if (!this.currentPos) this.currentPos = [moveIt.offsetLeft,15]; doPosChangeMem(this,[moveIt.offsetLeft,moveIt.offsetTop],[moveIt.offsetLeft+350,moveIt.offsetTop],20,20,0.5); } } function doPosChangeMem(elem,startPos,endPos,steps,intervals,powr) { //Position changer with Memory by www.hesido.com if (elem.posChangeMemInt) window.clearInterval(elem.posChangeMemInt); var actStep = 0; elem.posChangeMemInt = window.setInterval( function() { elem.currentPos = [ easeInOut(startPos[0],endPos[0],steps,actStep,powr), easeInOut(startPos[1],endPos[1],steps,actStep,powr) ]; elem.style.left = elem.currentPos[0]+"px"; elem.style.top = elem.currentPos[1]+"px"; actStep++; if (actStep > steps) window.clearInterval(elem.posChangeMemInt); } ,intervals) } //****************** function easeInOut(minValue,maxValue,totalSteps,actualStep,powr) { //Generic Animation Step Value Generator By www.hesido.com var delta = maxValue - minValue; var stepp = minValue+(Math.pow(((1 / totalSteps)*actualStep),powr)*delta); return Math.ceil(stepp) }
Esto hace que cuando le doy clic al div con id "moveit" avance algunos pixeles hacía la derecha, funciona muy bien y todo. Lo que no logro hacer es que en lugar de funcionar con un clic, sea con presionar las flechas del teclado, al final lo que quiero es que se mueva para todos lados clonando esta función para cada lado, como quien dice, desplazarlo por todo el documento dependiendo de que tecla presione, he leido que con AddEventListener puede ser pero nomás ninguno de mis intentos ha fructificado. ¿Alguna idea?
Gracias por adelantado.