2013-04-11 4 views
0

Простой код ниже не работает. Не знаю, почему, JS функция, чтобы перемещать изображение плавно. Помощь была бы отличной парней, почти все.Функция Javascript не работает, простой код

Код готов для копирования вставки в скрипт php и проверки его. Большое спасибо заранее

<?php 
echo " 

<script type='text/javascript'> 

var img = document.getElementById('test'); 

function translate(elem, x, y) { 
    var left = 120, 
     top = 120, 
     dx = left - x, 
     dy = top - y, 
     i = 1, 
     count = 20, 
     delay = 20; 

    function loop() { 
     if (i >= count) { return; } 
     i += 1; 
     elem.style.left = (left - (dx * i/count)).toFixed(0) + 'px'; 
     elem.style.top = (top - (dy * i/count)).toFixed(0) + 'px'; 
     setTimeout(loop, delay); 
    } 

    loop(); 
} 

</script> 
"; 
echo ' 
</head> 
<body> 
    <img id="test" src="http://placekitten.com/100/100" style="position:absolute; left:120px; top:120px;"> 


<a href="#" onclick="translate(\'test\', 30 , 30)">Translate to (0, 200)</a> 

</body> 
'; 
?> 
+0

Написать Javascript код вне от PHP – Amit

+0

Почему вы используете эхо распечатать HTML/JS? Вы можете просто закрыть тег php. –

+0

уже пробовал это, написав javascript за пределами php, такой же результат, как здесь – John

ответ

1
<!doctype html> 
<html> 
<head> 
<script type='text/javascript'> 

function byId(e){return document.getElementById(e);} 

function translate(elem, x, y) { 
    var left = 120, 
     top = 120, 
     dx = left - x, 
     dy = top - y, 
     i = 1, 
     count = 20, 
     delay = 20; 

    function loop() 
    { 
     if (i >= count) 
      return; 
     i += 1; 
     elem.style.left = (left - (dx * i/count)).toFixed(0) + 'px'; 
     elem.style.top = (top - (dy * i/count)).toFixed(0) + 'px'; 
     setTimeout(loop, delay); 
    } 
    loop(); 
} 

window.addEventListener('load', myInit, false); 

function myInit() 
{ 
    byId('myAnchor').addEventListener('click', handleLinkClick, false); 
} 

function handleLinkClick(evt) 
{ 
    //translate(byId('test'), 30, 30); // only works on the #test target. 
    translate(this, 30, 30); // makes the handler work for any element it's attached to. 
} 
</script> 
</head> 
<body> 
    <img id="test" src="http://placekitten.com/100/100" style="position:absolute; left:120px; top:120px;"> 
    <a id='myAnchor' href="#">Translate to (0, 200)</a> 
</body> 
</html> 
+0

Человек, который вы потрясающий :) работает как шарм. Мне любопытно, почему вам нужно добавить две функции? – John

+0

есть одна проблема, вы не используете link для перемещения изображения. Это важно для этого кода. Легко исправить? – John

+0

получил его :) добавьте в John

Смежные вопросы