Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 01.09.2012, 02:55
Интересующийся
Отправить личное сообщение для Mkaa Посмотреть профиль Найти все сообщения от Mkaa
 
Регистрация: 01.09.2012
Сообщений: 16

Элементы 'div', движение, создание.
Здравствуйте.
Имеются две функции. Обе работают по таймеру.
1.
function UnitCr(){

	var round = Math.round(Math.random() * 4);
	new_unit=document.createElement('div');
	new_unit.innerHTML='<img src="img/sq.png" />';
	new_unit.setAttribute("style","left:"+_xhostile[round]+"px;top:0px;position:absolute;");
	new_unit.setAttribute("id",count);
	_units[count]=new_unit;
	_xunits[count]=0;
	
	
	
	new_input.appendChild(_units[count]);
	
	count=count+1;
	
	}

^ Создание Элемента ^
2.
function UnitMov(){
	for(i=0;i<=count;i++)
	{	stick.value=i;
		_xunits[i]=_xunits[i]+2;
		_units[i].style.top=_xunits[i]+'px';
		
		if(_xunits[i]>400){
		//_units[i].style.top="0px";
		//_units[i].style.display="none";
		
		
		new_input.removeChild(_units[i]);<<< См. Сюда
		_units[i]=_units[count];
		_xunits[i]=_xunits[count];
		count=count-1;
		//var unitdel=_units[i];
		//document.getElementById('hostile').removeChild();
		
		
		
		/////neww_input._units[i].style.display="none";
		
		}
		
	}
	
}

^Движение элементов.^
После удаления элемента перестает работать функция движения элементов.
Вот сижу не сплю, пытаюсь понять почему.
Ответить с цитированием
  #2 (permalink)  
Старый 01.09.2012, 11:03
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Выложите тестовый пример с возможностью запуска [html run], экстрасенсы общаются на другом форуме
Ответить с цитированием
  #3 (permalink)  
Старый 01.09.2012, 14:28
Интересующийся
Отправить личное сообщение для Mkaa Посмотреть профиль Найти все сообщения от Mkaa
 
Регистрация: 01.09.2012
Сообщений: 16

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache, must-revalidate">
<meta http-equiv="expires" content="0">
<meta http-equiv="last-modified" content="">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<script type="text/javascript" src="http://l2gj.gev1.ru/jquery-1.8.0.min.js"></script>
<script type="text/javascript">
var _units=new Array();
var _xunits=new Array();
var _xhostile=new Array(0,40,80,120,160);
var count=0;
var stick;
var new_input;

var new_unit;

document.ready=function(){
stick = document.createElement("INPUT");
stick.setAttribute("value",count);
var new_put=document.getElementById('stick');
	new_put.appendChild(stick);
	
}
function UnitMov(){
	for(var i=0;i<=count;i++)
	{	stick.value=i;
		_xunits[i]=_xunits[i]+2;
		_units[i].style.top=_xunits[i]+'px';
		
		if(_xunits[i]>400){
		//_units[i].style.top="0px";
		//_units[i].style.display="none";
		
		new_input.removeChild(_units[i]);
		//new_input.removeChild(_units[i]);
		_units[i]=_units[count];
		_xunits[i]=_xunits[count];
		count=count-1;
		//var unitdel=_units[i];
		
		
		
		
		/////neww_input._units[i].style.display="none";
		
		}
		
	}
	
}
function UnitCr(){

	var round = Math.round(Math.random() * 4);
	new_unit=document.createElement('div');
	new_unit.innerHTML='<img src="http://l2gj.gev1.ru/img/sq.png" />';
	new_unit.setAttribute("style","left:"+_xhostile[round]+"px;top:0px;position:absolute;");
	new_unit.setAttribute("id",count);
	_units[count]=new_unit;
	_xunits[count]=0;
	
	
	new_input=document.getElementById('hostile');
	new_input.appendChild(_units[count]);
	
	count=count+1;
	
	}


var _unitmovetimer=setInterval(UnitMov, 10);
var _unitcrtimer=setInterval(UnitCr, 1000);
</script>

<style type="text/css">
body{background-color:#000000;}
.ground{border:1px solid #ffffff;margin: 1px auto;width:200px;height:400px;position:relative;}
#as{position: absolute; top: 320px; left: 160px; box-shadow: 1px 1px 5px #000000; }
#hostile{width:200px;height:400px;position:relative;}
#unit{background:url(http://l2gj.gev1.ru/img/sq.png);width:40px;height:40px;position:absolute;left:0px;right:0px;display:inline;}
#stick{border:1px solid #ffffff;margin: 1px auto;width:100px;height:50px;position:absolute;background-color:#ffffff;color:#000000;left:200px;top:0px;}
</style>
<body>
<div class="ground">
<div id="stick"></div>
<div id="hostile"></div>


</div>
</body></html>
Ответить с цитированием
  #4 (permalink)  
Старый 01.09.2012, 15:08
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

В итоге-то, какой эффект должен получиться?
Ответить с цитированием
  #5 (permalink)  
Старый 01.09.2012, 15:15
Интересующийся
Отправить личное сообщение для Mkaa Посмотреть профиль Найти все сообщения от Mkaa
 
Регистрация: 01.09.2012
Сообщений: 16

элементы которые заходят за поле(вниз) должны удалятся.
Массив в который записываются элементы должен изменятся, а именно последний элемент массива должен переместится на место удаленного элемента. И счетчик массива уменьшается на 1. Получается так что при удаление первого элемента, все остальные перестают двигаться. Т.е. цикл не работает.
Почему так происходит я не пойму=(.
Ответить с цитированием
  #6 (permalink)  
Старый 01.09.2012, 15:24
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Вот база, остальное прикрутите
<style>
	.div {
		position: absolute;
		left: 100px;
		width: 20px;
		height: 20px;
		border: solid 3px navy;
	}
</style>
<body>

<script>
window.onload = function () {
	function move () {
		var elem = document.createElement('div');
		elem.className = 'div';
		elem.style.top = '0px';
		document.body.appendChild(elem);
		var int = setInterval(function () {
			var top = parseInt(elem.style.top);
			if (top > 200) {
				clearInterval(int);
				document.body.removeChild(elem);
			} else {
				elem.style.top = top + 1 + 'px';
			}
		}, 10)
	}
	
	setInterval(function () {move()}, 1000);
}
</script>
Ответить с цитированием
  #7 (permalink)  
Старый 01.09.2012, 15:42
Интересующийся
Отправить личное сообщение для Mkaa Посмотреть профиль Найти все сообщения от Mkaa
 
Регистрация: 01.09.2012
Сообщений: 16



В принципе работает, но мне интересно почему цикл не пашет? Ведь все очевидно, блин... Ошибок же не выдает...
Ответить с цитированием
  #8 (permalink)  
Старый 01.09.2012, 15:43
Интересующийся
Отправить личное сообщение для Mkaa Посмотреть профиль Найти все сообщения от Mkaa
 
Регистрация: 01.09.2012
Сообщений: 16

_units[i]=_units[count];

что происходит в этот момент, что цикл вырубается.
Ответить с цитированием
  #9 (permalink)  
Старый 01.09.2012, 15:56
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Mkaa,
А выведите в консоль count и =_units[count];
Ответить с цитированием
  #10 (permalink)  
Старый 01.09.2012, 16:20
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Deff, там ссылки на элементы, неувязка в том, что всё происходит не синхронно, так как новый элемент, ссылка на который добавляется в конец массива происходит раньше и ссылки на элементы, которые ещё не дошли до низа просто теряются, так как заменяются новыми

Mkaa, объясняйте подробнее конечный эффект, который должен получиться
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
при изменении размера div элементы съезжают gallyamov jQuery 5 22.08.2012 10:24
При нажатии на ссылку раскрываются все div anonimous jQuery 1 09.08.2012 14:49
Динамическое создание IMG с определенными координатами в DIV sergonix Events/DOM/Window 3 29.02.2012 13:30
проблема с div И animate g00000dman jQuery 2 24.03.2011 23:34
как удалить все элементы в Div e ? Arfey Общие вопросы Javascript 14 10.06.2010 11:50