Forum Webscript.Ru

Программирование => JavaScript & JScript => Тема начата: Alexandr от 10 Ноября 2002, 11:23:56

Название: Изменить координаты объекта
Отправлено: Alexandr от 10 Ноября 2002, 11:23:56
Есть некий объект напр.
2


При событии необходимо изменить его координаты и размеры (тобиш масштабировать)

Пишу след.
function plus(){
document.all["l"+2].style.left*=1.25;
}

Начинам ругаться....
Пишем так
function plus(){
alert(document.all["l"+2].style.left);
}

Ответ - 200px
Стало понятно почему пред. пример не робит.
Но осталось непонятно как заставить его работать.....
Есть конечно идея - работать со строкой и....
document.all["l"+2].style.left=document.all["l"+2].style.left.replace("/px/i", "");

Но мне это кажется извратом.
Может, как говорится, есть способ лучше?
Название: Изменить координаты объекта
Отправлено: Oak от 10 Ноября 2002, 13:55:05
1) читай доки - там сразу написано, что оно строка
2) Опера может про эти доки и не знать ;) читай сравнение JS на http://developer.netscape.com
3) Есть функция parseInt или подобная - дабы не мучатся с replace
 (again - читай доки)
4) присваивать надо сново (сюрприз!) строку - т.е ко всему надо +"px"
делать
Название: Изменить координаты объекта
Отправлено: Макс от 10 Ноября 2002, 13:58:35
Цитировать
Может, как говорится, есть способ лучше?
В некоторых броузерах (типа NN) координаты - это число. А в IE - строка.
Я в таких случаях просто рекомендую пользоваться какими-либо межбраузерными библиотеками, типа klayers
В klayers например это делается:
layer("LayerName").setLeft(200);

Все остальное (преобразование в строку если нужно) klayers сделает за тебя
Название: Изменить координаты объекта
Отправлено: Alexandr от 10 Ноября 2002, 14:11:29
Цитировать
Я в таких случаях просто рекомендую пользоваться какими-либо межбраузерными библиотеками, типа klayers
В klayers например это делается:
layer("LayerName").setLeft(200);

Макс, а в моём случае выглядеть это будет так?
function plus(){
document.layer("l2").setLeft(document.all["l"+2].style.left*1.25);
}
Название: Изменить координаты объекта
Отправлено: Alexandr от 10 Ноября 2002, 14:53:22
Тут у меня ещё идейка......
Задача у меня следующая:
есть прога http://www.autodealer.ru/acat-online/
Там есть картинки и запчасти. Однако, кртанки у мя щас не "прощёлканы", т.е. нет связи картинок и запчастей.
Щас я делаю, чтобы эта связь была, т.е. выглядит это след. образом: на картинке рисую обекты и явой делаю связь м/у ними.
Т.е. выглядит так
1

2



Далее хочу ещё сделать масштабирование.
С картинокой все ок:
function minus(){
self.frames.pic.picture.height*=0.8;
self.frames.pic.picture.width*=0.8;
}
А вот с div\'ами вышеуказанная проблема вышла.
Дак вот идея в след.:
в div\'ах указывать все не в px, а в процентах!!!!!!

Внимание, вопрос: :-)
при изменении размеров картинки, а следовательно и первого div\'a (в который картинка заключена) изменят ли свои координаты остальные объекты (размеры и координаты которых указаны в процентах)?
Название: Изменить координаты объекта
Отправлено: Макс от 10 Ноября 2002, 17:21:26
Цитировать
Макс, а в моём случае выглядеть это будет так?
function plus(){
document.layer("l2").setLeft(document.all["l"+2].style.left*1.25);
}
нет.
примерно так:
layer("l2").setLeft(layer("l2).getLeft*1.25);
или
layer("l2").setLeft(parseInt(layer("l2).getLeft*1.25));
Название: Изменить координаты объекта
Отправлено: Alexandr от 10 Ноября 2002, 17:29:35
Пере#$%нил базу, перевел всё в проценты от картинки.
С масштабированием всё стало ОК.
Но опять возникли проблемы:
почему-то все хавают проценты кроме width задаёшь хоть 1000%, а ширина всё-равно только по ширине текста,
и вторая заморочка с размером шрифта. Раньше просто - берёшь высоту (в пикселах) и вычитаешь ~4
А сейчас......
Может есть какой алгоритм
Название: Изменить координаты объекта
Отправлено: Alexandr от 10 Ноября 2002, 17:37:18
Погодь, Макс, сейчас обратно пере#$%ню и заюзаю.
Название: Изменить координаты объекта
Отправлено: Макс от 10 Ноября 2002, 17:52:59
Цитировать
почему-то все хавают проценты кроме width задаёшь хоть 1000%,

1000% от чего? ширины экрана?
наверное примерно так
new_width = parseInt(width * persent)+\'px\';

а про шрифт я ничего не понял
Название: Изменить координаты объекта
Отправлено: Alexandr от 10 Ноября 2002, 18:00:18
Да не в яве, а так
2


Вот скопируй код:

Изображение





width: 26; height: 26; background-color: #3975B0;">1

width: [COLOR=deeppink][b]26[/b][/COLOR]; height: 26; background-color: #3975B0;">2




Попробуй вместо "26" поставить "1000%"

И кстати, твой скрипт что-т запустить не могу
Цитировать
layer("l2").setLeft(layer("l2).getLeft*1.25);

Пишу
function plus(){
alert(self.frames.pic.layer("l2"));
self.frames.pic.picture.height*=1.25;
self.frames.pic.picture.width*=1.25;
}
А он ругаться начинает... мол не поддерживает объект это свойство.
Название: Изменить координаты объекта
Отправлено: Макс от 10 Ноября 2002, 20:38:06
Цитировать
Да не в яве, а так
устанавливай яваскриптом. насколько я помню процентами писать нельзя.


Цитировать
function plus(){
alert(self.frames.pic.layer("l2"));
self.frames.pic.picture.height*=1.25;
self.frames.pic.picture.width*=1.25;
}
ну и на какую строку ругается? klayers подключил?
Название: Изменить координаты объекта
Отправлено: Alexandr от 11 Ноября 2002, 09:02:34
Цитировать
насколько я помню процентами писать нельзя.

В смысле? Что нельзя писать?
Я с процентами поязал.... та же петрушка
Типа только так работатет
new_width = some_width+\'%\';
Цитировать
ну и на какую строку ругается?

Конечно на alert(self.frames.pic.layer("l2"));
Цитировать
klayers подключил?

Конечно нет. А как? Ни разу не юзал klayers....
Название: Изменить координаты объекта
Отправлено: Alexandr от 24 Ноября 2002, 12:54:51
Решение:




<остальные div\'ы>
<остальные div\'ы>



А далее явойs меняем свойство main_layer.style.zoom

Всё.....