Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 29.12.2009, 05:20
Аватар для Jekel
Профессор
Отправить личное сообщение для Jekel Посмотреть профиль Найти все сообщения от Jekel
 
Регистрация: 20.11.2009
Сообщений: 257

изменение style.left и top через document.getElementById
Есть html страничка с изображением и его id="pic".

<html>
<head>
<title>Engine</title>
<script type="text/javascript" language="javascript" src="engine.js"></script>
</head>
<body onLoad="first()">
<img src="box.gif" id="pic" style="position: absolute; left:100; top:100"></img>
</body>
</html>


С помощью этого js нужно поменять style изображения на html страничке. А именно его left и top (увеличить их на 100 и 200).
Полученые данные в var top и var left выглядят так: 100px
цифра с приставкой 'px', тоесть с ней я не могу добавить к top или left другое число...

function first(){
	// Получаем нынешнее значение top изображения
	var top = document.getElementById("pic").style.top;
	// Получаем нынешнее значение left изображения
	var left = document.getElementById("pic").style.left;
	// Меняем src изображения
    document.getElementById("pic").src="circle.gif";
	// Меняем style изображения, нужно добавить к left 100 и к top 200
	document.getElementById("pic").style="position: absolute; left:" + (left+100) + "; top:" + (top+200) + "";
}


сейчас выходит так:
var top = 100px;
document.getElementById("pic").style="position: absolute; top:" + (100px+200) + "";


Выходит что код картинки будет таков:

<img src="box.gif" id="pic" style="position: absolute; left:100; top:100px100"></img>


Как это решить?

И как эти два действия слить в один?
document.getElementById("pic").src="circle.gif";	
document.getElementById("pic").style="position: absolute; left:" + (left+100) + "; top:" + (top+200) + "";

Как-то так...но так не работает:
document.getElementById("pic").src="circle.gif".style="position: absolute; left:" + (left+100) + "; top:" + (top+200) + "";

Последний раз редактировалось Jekel, 29.12.2009 в 05:24.
Ответить с цитированием
  #2 (permalink)  
Старый 29.12.2009, 09:32
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от Jekel
Как это решить?
parseInt

Сообщение от Jekel
И как эти два действия слить в один?
Зачем?
Ответить с цитированием
  #3 (permalink)  
Старый 29.12.2009, 15:39
Аватар для Jekel
Профессор
Отправить личное сообщение для Jekel Посмотреть профиль Найти все сообщения от Jekel
 
Регистрация: 20.11.2009
Сообщений: 257

для сокращения количества кода? можно так сделать?
А ParseInt пример можно на базе моего кода?
Ответить с цитированием
  #4 (permalink)  
Старый 29.12.2009, 15:51
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от Jekel
А ParseInt пример можно на базе моего кода?
Привести значение стиля к числу, прибавить 100 и дописать 'px'.

Сообщение от Jekel
для сокращения количества кода? можно так сделать?
Закешировать значение getElementById.
Ответить с цитированием
  #5 (permalink)  
Старый 29.12.2009, 16:03
Аватар для Jekel
Профессор
Отправить личное сообщение для Jekel Посмотреть профиль Найти все сообщения от Jekel
 
Регистрация: 20.11.2009
Сообщений: 257

пожалуйста, поменяй код..я так не доганяю ничего)

Последний раз редактировалось Jekel, 29.12.2009 в 16:16.
Ответить с цитированием
  #6 (permalink)  
Старый 29.12.2009, 19:48
Аватар для PeaceCoder
Профессор
Отправить личное сообщение для PeaceCoder Посмотреть профиль Найти все сообщения от PeaceCoder
 
Регистрация: 15.12.2009
Сообщений: 742

var el = document.getElementById('pic');
el.src="circle.gif";
var top = el.style.top, left=el.style.left; //тут будут, например 100px
top = parseInt(top); // теперь будет 100 без 'px'
left = parseInt(left);
el.style.top = (top+100)+'px'; // css требудет указания размерности
el.style.left = (left+100)+'px';


обьединить не получится. т.к. ты работаешь на разных уровнях свойств обьекта и к томуже операции присваивания возвращают не обьект, а результат присваивания.
Ответить с цитированием
  #7 (permalink)  
Старый 29.12.2009, 19:49
Аватар для Jekel
Профессор
Отправить личное сообщение для Jekel Посмотреть профиль Найти все сообщения от Jekel
 
Регистрация: 20.11.2009
Сообщений: 257

Спасибище, теперь понял
Ответить с цитированием
  #8 (permalink)  
Старый 09.11.2018, 17:24
Новичок на форуме
Отправить личное сообщение для serega_dgl Посмотреть профиль Найти все сообщения от serega_dgl
 
Регистрация: 04.11.2018
Сообщений: 4

Сообщение от Jekel Посмотреть сообщение
Есть html страничка с изображением и его id="pic".

<html>
<head>
<title>Engine</title>
<script type="text/javascript" language="javascript" src="engine.js"></script>
</head>
<body onLoad="first()">
<img src="box.gif" id="pic" style="position: absolute; left:100; top:100"></img>
</body>
</html>


С помощью этого js нужно поменять атрибут lang изображения на html страничке. А именно его left и top (увеличить их на 100 и 200).
Полученые данные в var top и var left выглядят так: 100px
цифра с приставкой 'px', тоесть с ней я не могу добавить к top или left другое число...

function first(){
	// Получаем нынешнее значение 
	var top = document.getElementById("pic").style.top;
	// Получаем нынешнее значение left изображения
	var left = document.getElementById("pic").style.left;
	// Меняем src изображения
    document.getElementById("pic").src="circle.gif";
	// Меняем style изображения, нужно добавить к left 100 и к top 200
	document.getElementById("pic").style="position: absolute; left:" + (left+100) + "; top:" + (top+200) + "";
}


сейчас выходит так:
var top = 100px;
document.getElementById("pic").style="position: absolute; top:" + (100px+200) + "";


Выходит что код картинки будет таков:

<img src="box.gif" id="pic" style="position: absolute; left:100; top:100px100"></img>


Как это решить?

И как эти два действия слить в один?
document.getElementById("pic").src="circle.gif";	
document.getElementById("pic").style="position: absolute; left:" + (left+100) + "; top:" + (top+200) + "";

Как-то так...но так не работает:
document.getElementById("pic").src="circle.gif".style="position: absolute; left:" + (left+100) + "; top:" + (top+200) + "";

Как вариант можно использовать этот код
var el = document.getElementById('pic');
el.src="circle.gif";
var top = el.style.top, left=el.style.left; //тут будут, например 100px
top = parseInt(top); // теперь будет 100 без 'px'
left = parseInt(left);
el.style.top = (top+100)+'px'; // css требудет указания размерности
el.style.left = (left+100)+'px';
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
eMail через JS konstantinopol Общие вопросы Javascript 15 12.01.2015 10:06
Изменение размеров картинки через скрипт SLV Общие вопросы Javascript 4 27.12.2010 11:40
Изменение текста слоя по изменениям в текстовом поле Воитель Общие вопросы Javascript 4 21.10.2008 11:03
Динамическое изменение <input text> baal1988 Events/DOM/Window 4 24.08.2008 17:17
XMLHTTPRequest передача имя через POST dds AJAX и COMET 0 14.08.2008 14:44