 
			
				09.09.2017, 14:01
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Интересующийся 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 26.09.2016 
					
					
					
						Сообщений: 13
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
			
			 
				Получить доступ к стилю объекта
			 
			
		
		
		
		
var tr1 = {
	name: '1a',
	obj: pole.innerHTML = "<img src='1a.png' class='obj'>",
	x: 100,
	y: 200
}
tr1.obj.style.top = 300 +'px';
( .obj { position: absolute; } )
 
Не могу сдвинуть картинку. Говорит, что нет такого объекта. 
Не факт, что так должно работать, просто пытаюсь вспомнить проект, исходники которого утеряны. 
Как сделать, чтобы можно было обращаться к объекту tr1 с его картинкой на экране?  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				09.09.2017, 14:09
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 27.05.2010 
					
					
					
						Сообщений: 33,150
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		evgeniyfill82,
  
pole.innerHTML = "<img src='1a.png' class='obj'>"
 var tr1 = {
  name: '1a',
  obj: pole.querySelector('.obj'),
  x: 100,
  y: 200
}
tr1.obj.style.top = 300 +'px';
 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				09.09.2017, 14:52
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Интересующийся 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 26.09.2016 
					
					
					
						Сообщений: 13
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		Блин, я в .hta все это вояю. Там говорит, что не поддерживает такой метод. Переименовал в html, там работает. Видимо надо под какой-то старый IE чтобы шло. (уже сталкивался, что в hta не все проканывает что должно) 
И второй вопрос. Цель в том, чтобы можно было создать например 100 tr1 объектов, управлять ими интервале, удалять и снова добавлять. Нельзя сделать, чтобы innerHTML был где-то прямо в объекте? Для удобства. 
Навроде того:
 
var obs = [];
var tr1 = { ... }
obs.push(tr1 = {name: '2a'});
obs.push(tr1 = {name: '3a'});
obs.push(tr1 = {name: '4a'});
alert(obs[2].name);
delete glb.obs[1];
if (obs[1]) alert(obs[1].name);
 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				09.09.2017, 18:24
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Интересующийся 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 26.09.2016 
					
					
					
						Сообщений: 13
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		Вроде бы вспомнил как примерно я это раньше на jquery исполнял. Но хотелось бы сделать все на яве для экономии ресурсов, потому как от 50и объектов в обработке начинаются притормаживания, может быть это бы помогло. 
var glb = {};
glb.obs = [];
glb.sss = 0;
function getTr(prm){
	var tr = {
		obj: $("<img src='1a.png' style='position:absolute;'>").appendTo("#pole"),
		x: prm.x,
		y: prm.y,
		u: prm.u,
		vid: 'none',
		liv: 20
	}
	return tr;
}
var vrm = setInterval(function(){ gmm(); }, 100);
function gmm(){
	if (glb.sss == 5) glb.sss = 0;
	if (glb.sss == 0) 
	glb.obs.push(getTr({x:100, y:200, u:1}));
	for(i=0;glb.obs.length>i;i++) if (glb.obs[i]) {
		glb.obs[i].x += 10;
		glb.obs[i].y += 10;
		glb.obs[i].u += 10;
		glb.obs[i].liv--;
		glb.obs[i].vid = 'block';
		
		glb.obs[i].obj.css({ 
			'transform': 'rotate('+ glb.obs[i].u +'deg)', 
			'top': glb.obs[i].x +'px', 
			'left': glb.obs[i].y +'px',
			'display': glb.obs[i].vid
		});
		if (glb.obs[i].liv == 0) {
			glb.obs[i].obj.remove();
			delete glb.obs[i];
		}
	}
	glb.sss++;
}
Однако с rotate в .hta похоже будут непреодолимые сложности. А так хотелось запилить игруху чтобы с компа работала, безо всяких хостингов. Можно и так конечно html-ку запускать, но данные никакие не сохранишь.  
		
	
		
		
		
		
		
		
	
		
			
			
	
			
			
			
			
			
				 
			
			
			
			
			
			
				
			
			
			
		 
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				09.09.2017, 19:32
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 27.05.2010 
					
					
					
						Сообщений: 33,150
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		evgeniyfill82, 
 в вашем браузере нет querySelector 
тогда можно так childNodes
 
pole.innerHTML = "<img src='1a.png' class='obj'>"
 var tr1 = {
  name: '1a',
  obj: pole.childNodes[0],
  x: 100,
  y: 200
}
tr1.obj.style.top = 300 +'px';
или создавайте картинку  
var img = new Image();
 img.src = '1a.png'
 img.className = 'obj';
 pole.appendChild(img);
 var tr1 = {
  name: '1a',
  obj: img,
  x: 100,
  y: 200
}
tr1.obj.style.top = 300 +'px';
 
		
	
		
		
		
		
		
		
		
						  
				
				Последний раз редактировалось рони, 09.09.2017 в 19:38.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				09.09.2017, 19:45
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Интересующийся 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 26.09.2016 
					
					
					
						Сообщений: 13
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 рони, 
я не совсем понимаю как именно использовать ваш пример в моем, описанном в последнем сообщении. 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				09.09.2017, 19:54
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 27.05.2010 
					
					
					
						Сообщений: 33,150
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		evgeniyfill82,
   
function getTr(prm){
  var img = new Image();
 img.src = '1a.png'
 img.className = 'obj';
 img.style.position ='absolute'
 pole.appendChild(img);
  var tr = {
    obj: img,
    x: prm.x,
    y: prm.y,
    u: prm.u,
    vid: 'none',
    liv: 20
  }
  return tr;
}
 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				09.09.2017, 20:02
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Интересующийся 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 26.09.2016 
					
					
					
						Сообщений: 13
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		рони, 
 пардон, я ответил раньше вашего дополнения к сообщению. с дополнением да, все работает без jquery. Спасибо.
 
var glb = {};
glb.obs = [];
glb.sss = 0;
function getTr(prm){
	var img = new Image();
	img.src = '1a.png'
	img.className = 'obj';
	pole.appendChild(img);
	var tr1 = {
		name: '1a',
		obj: img,
		x: prm.x,
		y: prm.y,
		u: prm.u,
		vid: 'none',
		liv: 20
	}
	return tr1;
}
var vrm = setInterval(function(){ gmm(); }, 100);
function gmm(){
	if (glb.sss == 3) glb.sss = 0;
	if (glb.sss == 0) 
	glb.obs.push(getTr({x:10, y:10, u:1}));
	for(i=0;glb.obs.length>i;i++) if (glb.obs[i]) {
		glb.obs[i].x += 10;
		glb.obs[i].y += 10;
		glb.obs[i].u += 10;
		glb.obs[i].liv--;
		glb.obs[i].vid = 'block';
		
		glb.obs[i].obj.style.top = glb.obs[i].x +'px';
		glb.obs[i].obj.style.left = glb.obs[i].y +'px';
		glb.obs[i].obj.style.display =glb.obs[i].vid;
		if (glb.obs[i].liv == 0) {
			glb.obs[i].obj.parentNode.removeChild(glb.obs[i].obj);
			delete glb.obs[i];
		}
	}
	glb.sss++;
}
 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				09.09.2017, 20:06
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 27.05.2010 
					
					
					
						Сообщений: 33,150
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		evgeniyfill82, 
Object.keys возможно опять нет -- тогда for in
  
<!DOCTYPE html>
<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
</head>
<body>
<div id="pole"></div>
 <script>
var glb = {};
glb.obs = [];
glb.sss = 0;
function getTr(prm){
  var img = new Image();
 img.src = 'http://paar.com.au/images/star95x72.png'
 img.className = 'obj';
 img.style.position ='absolute'
 pole.appendChild(img);
  var tr = {
    obj: img,
    x: prm.x,
    y: prm.y,
    u: prm.u,
    vid: 'none',
    liv: 20,
    css : function(data) {
    Object.keys(data).forEach(function (key) {
 img.style[key] = data[key]
});
}
  }
  return tr;
}
var vrm = setInterval(function(){ gmm(); }, 100);
function gmm(){
  if (glb.sss == 5) glb.sss = 0;
  if (glb.sss == 0)
  glb.obs.push(getTr({x:100, y:200, u:1}));
  for(i=0;glb.obs.length>i;i++) if (glb.obs[i]) {
    glb.obs[i].x += 10;
    glb.obs[i].y += 10;
    glb.obs[i].u += 10;
    glb.obs[i].liv--;
    glb.obs[i].vid = 'block';
    glb.obs[i].css({
      'transform': 'rotate('+ glb.obs[i].u +'deg)',
      'top': glb.obs[i].x +'px',
      'left': glb.obs[i].y +'px',
      'display': glb.obs[i].vid
    });
    if (glb.obs[i].liv == 0) {
      glb.obs[i].obj.remove();
      delete glb.obs[i];
    }
  }
  glb.sss++;
}
 </script>
</body>
</html>
 
		
	
		
		
		
		
		
		
	
		
			
			
	
			
			
			
			
			
				 
			
			
			
			
			
			
				
			
			
			
		 
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				09.09.2017, 20:41
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 27.05.2010 
					
					
					
						Сообщений: 33,150
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 evgeniyfill82, 
 удаление не корректировал! 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
 
 
 
 
 
	 | 
 
 
 |