Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   как правильно применить цикл while в этом скрипте? (https://javascript.ru/forum/misc/14475-kak-pravilno-primenit-cikl-while-v-ehtom-skripte.html)

Дмитрий_Кирсанов 18.01.2011 14:01

как правильно применить цикл while в этом скрипте?
 
Хочу сделать так чтобы красный квадрат двигался при каждом событии onclick() вправо и вверх, пока координата top не достигла 20px. Без цикла скрипт работает, реализовать в нем условие while(this.style.top<=20px){} не получается. Кто знает как это сделать, объясните, пожалуйста.

<html>

<script for="square" event="onclick">
while(this.style.top<=20px){
this.style.left=parseInt(this.style.left)+20+'px';
this.style.top=parseInt(this.style.top)-20+'px';
}
</script>


<div id="square" style="position:absolute; top:100px; left:20px; width:50px; height:50px; background:red; border:3px solid black"></div>

</html>

Matre 18.01.2011 14:25

var dX = 100, dY = 100; // Начальные координаты
document.getElementById('square').onclick = function () {
	dX += 20;
	dY -= 20;
	this.style.left = dX + "px";
	this.style.top = dY + "px";
	if (dY < 20)
		this.onclick = new Function;
};

Дмитрий_Кирсанов 18.01.2011 14:41

спасибо конечно, но меня мой скрипт интресует, возможна ли в нем реализация цикла, если да, то как?

Matre 18.01.2011 15:05

нет,не возможна

Vulkan 18.01.2011 15:22

Ну вот чуть похоже на ваш скрипт =)

<html>

<script type="text/javascript">
function move(element) {
    var top = parseInt(element.style.top),
        left = parseInt(element.style.left);
    element.style.left = left + 20 + 'px';
    element.style.top = top - 20 + 'px';
    if (top >= 50) setTimeout(function () {
        move(element);
    }, 50);
}
</script>


<div id="square" style="position:absolute; top:100px; left:20px; width:50px; height:50px; background:red; border:3px solid black" onclick="move(this);"></div>

</html>

Matre 18.01.2011 15:30

Vulkan

ему веть с цыклом надо!!

Дмитрий_Кирсанов

while (false);
var dX = 100, dY = 100; // Начальные координаты
document.getElementById('square').onclick = function () {
	dX += 20;
	dY -= 20;
	this.style.left = dX + "px";
	this.style.top = dY + "px";
	if (dY < 20)
		this.onclick = new Function;
};


с цыклом


Часовой пояс GMT +3, время: 00:17.