![]() |
Модераторы: Sardar, Aliance |
![]() ![]() ![]() |
|
gorden |
|
||||||||||||
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 15.5.2007 Репутация: нет Всего: нет |
Привет!
Помогите пожалуйста с рег. выражением. Я вытаскиваю содержимое DIVа с помощью innerHTML. В этом содержимом есть такой тег:
Различные браузеры могут его так-же интерпритировать как:
или
или
т.е. удалять кавычки или менять элементы местами или добавлять обратный слеш в конце тега, например:
Мне нужно с помощью регулярного выражения найти этот тег из полученного содержимого DIVa. значение value - может быть буквой или цифрой значение id - может быть может быть буквой или цифрой или _ У меня на ум приходит только следующее, но это не работает:
Буду очень благодарен за любой совет. Спасибо!!!!!! |
||||||||||||
|
|||||||||||||
solenko |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1473 Регистрация: 15.1.2006 Где: Украина Репутация: 9 Всего: 67 |
А может проще пробежаться по DOM дереву и найти этот элемент?
-------------------- Ла-ла-ла-ла Заметьте, нет официального подтверждения, что это не просто четыре слога. |
|||
|
||||
Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 78 Всего: 317 |
-------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 84 Всего: 386 |
Sardar, В этом случае, скорее всего, даже getElementById подойдет ;-)...
-------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! ![]() |
|||
|
||||
gorden |
|
|||
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 15.5.2007 Репутация: нет Всего: нет |
Спасибо, я прекрасно понимаю, что через getElementById это можно сделать. Но в моем случае необходимо сделать именно через рег. выражения, иначе я бы не спрашивал.
|
|||
|
||||
Astraller |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 300 Регистрация: 1.8.2007 Где: $Украина[Кры м]->Феодосия Репутация: 2 Всего: 5 |
gorden, а может вы еще не поленитесь изложить почему?
![]() -------------------- A.S.T.R.A.L.L.E.R.: Artificial Synthetic Technician Responsible for Assassination, Logical Learning and Efficient Repair |
|||
|
||||
gorden |
|
|||
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 15.5.2007 Репутация: нет Всего: нет |
Ну вот смотрите:
Этот код, например, будет размещаться на разных сайтах. При этом, подключаемый "myscript.js", берет содержимое DIVa при помощи innerHTML и проверяет, не внесены ли какие-либо ненужные изменения в содержимое DIVa "container". В DIVе могут находится и теги и Текст и все что угодно. Подключаемый скрипт "myscript.js" проверяет это, и если нет ненужных изменений, то выполняет одно действие, а если есть - другое. Вот мне и нужно это все проверить. Как в этом случае через DOM работать я пока не представляю. У меня пока получается проверить текст, с учетом случайных пробелов и переводов строки, которые допустимы для текста, но теги с более чем одним атрибутом проверить пока не получается. |
|||
|
||||
ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 84 Всего: 386 |
В тот момент, когда скрипт "берет содержимое DIVa при помощи innerHTML" этот самый div УЖЕ есть в DOM и его и его содержимое можно проверить самим DOM'ом.
Тут есть тонкость - браузеры могут навесить свои собственные атрибуты на тег без разрешения, так что проверять надо только самые "ходовые" ![]() -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! ![]() |
|||
|
||||
gorden |
|
||||||
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 15.5.2007 Репутация: нет Всего: нет |
Не работает у меня ни в одном браузере такая конструкция. Не выходит этот код на mydiv. Так тоже не работает:
Хорошо, если через DOM, хотя в этом случае не проверить содержимое текста, то как тогда правильно обратиться к mydiv, толко не через главный документ: document.getElementById('mydiv') а через 'container'? И все же если есть мысли по поводу рег. выражений, pls. подскажите. |
||||||
|
|||||||
Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 78 Всего: 317 |
Этого не может быть, если только скрипт не пытается исполниться до вёрстки <div id="container... innerHTML - строка, выборок как коллекция не поддерживает. getElementById метод документа, потому как id уникален во всём документе (если вёрстка валидна), следовательно реализовать его для контейнерных элементов не имеет смысла. Вот в этой точке вместо выдёргивания innerHTML поставь div.getElementsByTagName("input") - список всех input'ов внутри div'а. Да, div это твоя переменная, где раньше стоял div.innerHTML... Да, getElementsByTagName пишеться с s (множественное). Вроде бы больше нигде ошибиться нельзя... Регами не стоит, это как минимум глупо. Если всё же очень хочется, то не нужно вносить атрибуты в рег, просто захвати все:
P.S. при проблемах, отвечай с ссылкой на страницу, иначе долго гадать будем. -------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
gorden |
|
||||
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 15.5.2007 Репутация: нет Всего: нет |
Никак не пойму. Все равно не работает. Перегрелся я что-ли? Ошибка: container.getElementById is not a function
|
||||
|
|||||
Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 78 Всего: 317 |
gorden, повторяю, id - уникальный идентификатор на странице. Уникальный - означает один единственный, второго быть не может, иначе будет ошибка (браузер проигнорирует их множество, выдаст произвольный). Вывод: getElementById не имеет смысла вкладывать вне документа, т.к. иерархии (дерева) быть не может.
Решение: return document.getElementById("myid").value; В отличии от id, имя тега не уникально (естественно), т.е. можно взять все теги с определённым именем из некоторого контейнера. Для этого метод (любой контейнер или document).getElementsByTagName(name). Возвращает список всех найденных, выбираешь необходимый. -------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
gorden |
|
|||
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 15.5.2007 Репутация: нет Всего: нет |
Я понял теперь. Спасибо. Буду пробовать одновременно и через DOM (для тегов) и через RegEx (для текста внутри контейнера).
THANKS!!!!!!!!!!!!!! |
|||
|
||||
gorden |
|
|||
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 15.5.2007 Репутация: нет Всего: нет |
Снова возвращаюсь к теме, т.к. возникла еще одно проблема. Вот имеем:
В данном случае в контейнере только один DIV. У этого DIVа есть атрибут style со значением. Во всех браузерах кроме IE переменная styleContent получает точное значение атрибута style, а IE почему присваивает ей null. Подскажите pls. в чем проблема Спасибо. |
|||
|
||||
Astraller |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 300 Регистрация: 1.8.2007 Где: $Украина[Кры м]->Феодосия Репутация: 2 Всего: 5 |
Можно попробовать:
Или просто:
У меня, помнится работало и то и другое везде. ![]() Это сообщение отредактировал(а) Astraller - 28.1.2008, 16:24 -------------------- A.S.T.R.A.L.L.E.R.: Artificial Synthetic Technician Responsible for Assassination, Logical Learning and Efficient Repair |
||||
|
|||||
![]() ![]() ![]() |
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |