Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Работа со стилями CSS (возникла проблемка) (https://javascript.ru/forum/events/6758-rabota-so-stilyami-css-voznikla-problemka.html)

ExtendedPlay 19.12.2009 21:11

Работа со стилями CSS (возникла проблемка)
 
Привет всем!

Пишу "мини-парсер" CSS-стилей в целях исправления багов в Ие6.

Для примера, приведу часть кода:
var sheet = document.styleSheets[0];
var rulezz = sheet.rules;
for(var j=0; j<rulezz.length; j++){
	var rule = rulezz[j];
	if( rule.selectorText.match('.l-cont ul li:hover ul') ){
		alert('Yep!');
	}else{
		alert(rule.selectorText);
	}
}


Итак, суть проблемы:
alert('Yep!') не показывался ни разу...))))))

В alert(rule.selectorText) содержится именно та, искомая строка '.l-cont ul li:hover ul'
Но всё равно, условие if( rule.selectorText.match('.l-cont ul li:hover ul') ) выполняться ни в какую не хочет. Я даже уже не знаю что делать :blink:

Помогите плиз) :-?

Заранее спасибо откликнувшимся!

pS: К странице подключен JQuery, так что можно что-то сделать с его помощью)

PeaceCoder 19.12.2009 23:20

а если так
if( rule.selectorText.match(/\.l-cont ul li:hover ul/) ){

ExtendedPlay 19.12.2009 23:41

я подумал о том же, и в данный момент у меня написано примерно так:
if( rule.selectorText.match(/.l-cont ul li:hover ul/i) ){


кстати, еще вопрос возник... если написать вот так:
if( rule.selectorText == '.l-cont ul li:hover ul' ){

данная конструкция, как ни странно, не работает... я в шоке)

alert(rule.selectorText) показывает что rule.selectorText = .l-cont ul li:hover ul
а условие if( ... ){ всё равно не выполняется... странный этот selectorText :-?

PeaceCoder 20.12.2009 00:22

а ты попробуй alert('#'+rule.selectorText+'#');
видимо есть пробелы...

ExtendedPlay 20.12.2009 11:08

ммм... ну выводит он #.l-cont ul li:hover ul#, а толку то?

пока что работает лишь если "делать всё по-правилам", то есть указывать как regExp.

надо посмотреть есть ли у ДЖКвери подобные функции ;)

PeaceCoder 20.12.2009 13:30

может пробелов между словами больше оного? я вообще хз почему регулярка срабатывает а прямое сравнение нет...

subzey 22.12.2009 12:56

…
rule.selectorText/**/.toLowerCase()/**/.match('.l-cont ul li:hover ul')
…

ExtendedPlay 22.12.2009 19:27

Оу! неожиданное решение)))))) subzey, спасибо! работает... точнее работает только для стилей полностью в нижнем регистре :)
Вобщем оставлю ка я регЭксп)

Всем спасибо!

subzey 22.12.2009 20:08

rule.selectorText.toLowerCase().match('.l-cont ul li:hover ul'.toLowerCase())

:)

ExtendedPlay 23.12.2009 01:23

ггг) можно и так))))))))
а вот теперь другой вопрос... нагрузззззкааааааа)
что быстрее, просто регекспом проверить или 2 раза выполнять toLowerCase(), с учетом того что этому скрипту придется проверять более 2000 правил за раз) к тому же это всё в Ие6 :blink:


Часовой пояс GMT +3, время: 02:12.