[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Нашел грабли с назначением стиля.
sergeiss
Коллеги-программеры, прошу пинуть меня в нужную сторону :)

Во-первых, обнаружил такие грабли. Вот такое назначение
bground.style='position:fixed; left:150px; top:150px; width:100px; height:100px; background-color:#BBBBBB; display:block; z-index:1000 ';

работает в Опере, но в ИЕ8 и в Хроме - не хочет. Там получается только назначение по частям (по элементам):
  bground.style.position='fixed';
bground.style.left='500px';
bground.style.top='200px';
bground.style.width='100px';
...
и так далее


Но это бы еще ладно... Обидно, конечно :) Но не переломлюсь, сделаю такое назначение.

А если мне нужно просто переназначить целиком весь стиль с одного элемента на другой? Вот тут я не понял. Грабли.

Следующий код работает только в Опере.
mf.style=obj.getAttribute( 'style' );

Вот этот код - в Опере и Хроме работает, но не в ИЕ
mf.setAttribute('style', obj.getAttribute('style'));


следующий код
alert( obj.getAttribute('style') );

выводит в ИЕ слово "object", а в Опере и Хроме - содержимое стиля...

Пытался в цикле перебрать элементы стиля - опять же ИЕ не видит нифига. Говорит, что "mf.style.length" undefined, в то время как Опера и Хром показывают реальное количество назначенных стилю элементов (точнее, всё содержимое стиля)...

И как сделать так, чтобы в ИЕ работало? И чтобы код был универсальный, кроссбраузерный?

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Michael
Цитата
Вот такое назначение

ну ты берешь и объекту строку присваиваешь.
Надо:

bground.style.cssText = '...';


_____________
There never was a struggle in the soul of a good man that was not hard
glock18
Цитата (sergeiss @ 14.03.2011 - 09:04)
Пытался в цикле перебрать элементы стиля - опять же ИЕ не видит нифига. Говорит, что "mf.style.length" undefined, в то время как Опера и Хром показывают реальное количество назначенных стилю элементов (точнее, всё содержимое стиля)...


ну так естественно length не определен, это же не массив. попробуй циклом for (var i in mf.style) пройти - жсовый аналог форича
ApuktaChehov
Вот так работает везде:
var obj = document.getElementById('div');
obj.setAttribute('style', 'border: 1px solid; width: 200px; height: 200px; background-color: #f00;');

var obj1 = document.getElementById('div1');
obj1.setAttribute('style', obj.getAttribute("style"));


_____________
sergeiss
Цитата (Michael @ 14.03.2011 - 13:24)
Надо:

bground.style.cssText = '...';

Спасибо, это то, что надо :)

Цитата (glock18 @ 14.03.2011 - 13:36)
ну так естественно length не определен, это же не массив.

Но тем не менее Опера и Хром выдают число, соответствующее количеству назначенных мной элементов стиля.

Цитата (ApuktaChehov @ 14.03.2011 - 14:35)
obj1.setAttribute('style', obj.getAttribute("style"));

Про такое назначение я написал в первом же посте, что не работает так!!!

А вот так, как Michael написал
ch.style.cssText=cr.style.cssText;

работает очень хорошо и во всех браузерах (из 3-х указанных мной).

PS. Похоже, что Опера - слишком умная, понимает даже кривоватый код :) Вот грабли и получаются.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
ApuktaChehov
sergeiss - я тестировал во всех браузерах. Работало во всех. Если конечно тебе IE 6 нужен, то не знаю, в нем не пробовал.

И в первом посте у тебя немного иначе:
bground.style='position:fixed; left:150px; top:150px; width:100px; height:100px; background-color:#BBBBBB; display:block; z-index:1000 ';

и
 obj.setAttribute('style', 'border: 1px solid; width: 200px; height: 200px; background-color: #f00;');

разные вещи.

Ну это если я все правильно понял.

_____________
sergeiss
ApuktaChehov - я говорил про ИЕ8. В 6-м меня не интересует :)

И еще. Ты же сказал, что вот так тоже должно работать:
obj1.setAttribute('style', obj.getAttribute("style"));

но про эту хрень я сказал в самом начале, что не везде работает.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
glock18
Цитата (ApuktaChehov @ 14.03.2011 - 10:49)
И в первом посте у тебя немного иначе:

читай что ли внимательней wink.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.