Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 19.12.2009, 20:11
Интересующийся
Отправить личное сообщение для ExtendedPlay Посмотреть профиль Найти все сообщения от ExtendedPlay
 
Регистрация: 19.10.2008
Сообщений: 18

Работа со стилями 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') ) выполняться ни в какую не хочет. Я даже уже не знаю что делать

Помогите плиз)

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

pS: К странице подключен JQuery, так что можно что-то сделать с его помощью)
Ответить с цитированием
  #2 (permalink)  
Старый 19.12.2009, 22:20
Аватар для PeaceCoder
Профессор
Отправить личное сообщение для PeaceCoder Посмотреть профиль Найти все сообщения от PeaceCoder
 
Регистрация: 15.12.2009
Сообщений: 742

а если так
if( rule.selectorText.match(/\.l-cont ul li:hover ul/) ){
Ответить с цитированием
  #3 (permalink)  
Старый 19.12.2009, 22:41
Интересующийся
Отправить личное сообщение для ExtendedPlay Посмотреть профиль Найти все сообщения от ExtendedPlay
 
Регистрация: 19.10.2008
Сообщений: 18

я подумал о том же, и в данный момент у меня написано примерно так:
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
Ответить с цитированием
  #4 (permalink)  
Старый 19.12.2009, 23:22
Аватар для PeaceCoder
Профессор
Отправить личное сообщение для PeaceCoder Посмотреть профиль Найти все сообщения от PeaceCoder
 
Регистрация: 15.12.2009
Сообщений: 742

а ты попробуй alert('#'+rule.selectorText+'#');
видимо есть пробелы...
Ответить с цитированием
  #5 (permalink)  
Старый 20.12.2009, 10:08
Интересующийся
Отправить личное сообщение для ExtendedPlay Посмотреть профиль Найти все сообщения от ExtendedPlay
 
Регистрация: 19.10.2008
Сообщений: 18

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

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

надо посмотреть есть ли у ДЖКвери подобные функции
Ответить с цитированием
  #6 (permalink)  
Старый 20.12.2009, 12:30
Аватар для PeaceCoder
Профессор
Отправить личное сообщение для PeaceCoder Посмотреть профиль Найти все сообщения от PeaceCoder
 
Регистрация: 15.12.2009
Сообщений: 742

может пробелов между словами больше оного? я вообще хз почему регулярка срабатывает а прямое сравнение нет...
Ответить с цитированием
  #7 (permalink)  
Старый 22.12.2009, 11:56
Аватар для subzey
Пионэр
Отправить личное сообщение для subzey Посмотреть профиль Найти все сообщения от subzey
 
Регистрация: 16.11.2009
Сообщений: 1,322

…
rule.selectorText/**/.toLowerCase()/**/.match('.l-cont ul li:hover ul')
…
Ответить с цитированием
  #8 (permalink)  
Старый 22.12.2009, 18:27
Интересующийся
Отправить личное сообщение для ExtendedPlay Посмотреть профиль Найти все сообщения от ExtendedPlay
 
Регистрация: 19.10.2008
Сообщений: 18

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

Всем спасибо!
Ответить с цитированием
  #9 (permalink)  
Старый 22.12.2009, 19:08
Аватар для subzey
Пионэр
Отправить личное сообщение для subzey Посмотреть профиль Найти все сообщения от subzey
 
Регистрация: 16.11.2009
Сообщений: 1,322

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

Ответить с цитированием
  #10 (permalink)  
Старый 23.12.2009, 00:23
Интересующийся
Отправить личное сообщение для ExtendedPlay Посмотреть профиль Найти все сообщения от ExtendedPlay
 
Регистрация: 19.10.2008
Сообщений: 18

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



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

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