|
30.07.2012, 23:24
|
|
Профессор
|
|
Регистрация: 22.03.2012
Сообщений: 3,744
|
|
Да, скриншот мелковат, так получается чего или нет? Посоветованный пример посмотрели?
PS: javascript: в обработчиках уже устарело, поэтому не нужно
функцию rist вынести за пределы цикла
|
|
30.07.2012, 23:37
|
|
Профессор
|
|
Регистрация: 22.03.2012
Сообщений: 3,744
|
|
<style>
div {
border: solid 1px;
width: 50px;
height: 50px;
}
</style>
<div id="div" style="position: absolute; top: 0px; left: 0px; border: none; ">
<button>click</button>
<div>div1</div>
<div>div2</div>
<div>div3</div>
</div>
<script>
window.onload = function () {
var div = document.getElementById('div');
var but = div.children[0];
but.onclick = function () {
var count = 200;
var step = 6;
var coof = 1;
var goLeft = function (elem) {
elem.style.left = parseInt(elem.style.left) + step;
}
for (var i = 0; i < count; i += step) {
setTimeout(function () {goLeft(div)}, i*coof);
}
}
}
</script>
|
|
04.08.2012, 16:18
|
Интересующийся
|
|
Регистрация: 24.07.2012
Сообщений: 24
|
|
причём тут это? Ваш код передвигает весь родителський див с потомками, а не набор определённых дивов внутри...
не то всё это(
|
|
04.08.2012, 17:16
|
|
Студент
|
|
Регистрация: 30.04.2012
Сообщений: 1,113
|
|
Сообщение от Romeo
|
тут вызов рекурсивный
|
нет у Вас рекурсивного вызова и правильно один раз выполняется
если бы вместо setTimeout(rist,0); написали бы rist()- была бы рекурсия
|
|
04.08.2012, 23:09
|
Интересующийся
|
|
Регистрация: 24.07.2012
Сообщений: 24
|
|
Сообщение от vadim5june
|
нет у Вас рекурсивного вызова и правильно один раз выполняется
если бы вместо setTimeout(rist,0); написали бы rist()- была бы рекурсия
|
аналогичные выражения. включал счётчик, проверял.
|
|
04.08.2012, 23:19
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
Romeo,
Длинный код - жарко - лучше дебажить или с готовой странички или минималистический код с HTML работающий в топике и демонстрирующий проблему...
Просто подобная задача была вчера - полторы штуки - а тут бесплатно и напрягайся,
|
|
05.08.2012, 10:07
|
|
Профессор
|
|
Регистрация: 22.03.2012
Сообщений: 3,744
|
|
Сообщение от Romeo
|
причём тут это? Ваш код передвигает весь родителський див с потомками, а не набор определённых дивов внутри...
не то всё это(
|
В чём проблема доработать код функции goLeft (которую логичнее было бы назвать goRight), и перемещать необходимые вам элементы, я лишь показал пример как это можно сделать (в том числе, не объявляя в цикле функцию, её вообще можно вынести за пределы обработчика onclick) или вам нужен готовый скрипт с нуля?
|
|
05.08.2012, 18:49
|
Интересующийся
|
|
Регистрация: 24.07.2012
Сообщений: 24
|
|
готовый скрипт с нуля я и сам написать могу, я лишь только попросил расставить правильно кавычки в первом сообщении)
ладно, сейчас попробую переделать вашу функцию... посмотрим что получиться)
спасибо.
|
|
05.08.2012, 19:52
|
Интересующийся
|
|
Регистрация: 24.07.2012
Сообщений: 24
|
|
вот, сделал
Всем огромное спасибо, и отдельно Бесу за пример скрипта который я переделал)
<style>
div div {
border: solid 1px;
width: 50px;
height: 50px;
}
</style>
<div style="position: relative; top: 0px; left: 0px;">
<div onclick="qwe(id)" style="position: absolute; top: 0px; left: 0px;" id="1">div1</div>
<div onclick="qwe(id)" style="position: absolute; top: 50px; left: 0px;" id="2">div2</div>
<div onclick="qwe(id)" style="position: absolute; top: 100px; left: 0px;" id="3">div3</div>
<div onclick="qwe(id)" style="position: absolute; top: 150px; left: 0px;" id="4">div4</div>
</div>
<script>
function qwe(id)
{
var count = 200;
var step = 6;
var coof = 1;
for (var j = id; j < 5; j++) {
for (var i = 0; i < count; i += step) {
setTimeout("document.getElementById('"+j+"').style.left = parseInt(document.getElementById('"+j+"').style.left) + parseInt('"+step+"')",i*step);
}
}
}
</script>
Последний раз редактировалось Romeo, 05.08.2012 в 20:06.
|
|
05.08.2012, 21:51
|
|
Профессор
|
|
Регистрация: 22.03.2012
Сообщений: 3,744
|
|
Можно так (хотя при быстрых кликах не будет точности)
<style>
#div div {
position: absolute;
border: solid 1px;
width: 50px;
height: 50px;
}
</style>
<div id="div">
<div style="left: 0px; top: 0px">div1</div>
<div style="left: 0px; top: 50px;">div2</div>
<div style="left: 0px; top: 100px;">div3</div>
<div style="left: 0px; top: 150px">div4</div>
</div>
<script>
window.onload = function () {
var div = document.getElementById('div');
var divs = div.children;
var len = divs.length;
var count = 200;
var step = 6;
var coof = 1;
var mas;
function goRight(mas) {
var len = mas.length;
for (var i = 0; i < len; i++) {
mas[i].style.left = parseInt(mas[i].style.left) + step;
}
}
div.onclick = function (e) {
e = e || event;
var target = e.target || e.srcElement;
mas = [];
for (var i = 0; i < len; i++) {
if (target == divs[i]) {
for (var j = i; j < len; j++) {
mas.push(divs[j]);
}
break;
}
}
for (var i = 0; i < count; i += step) {
setTimeout(function () {goRight(mas)}, i*step);
}
}
}
</script>
|
|
|
|