Страницы: 1
При написании сайта возникла проблемы такого рода:
При загрузке страницы формируется таблица скриптом и вставляется с помощью метода innerHTML в div. Так вот на двух одинаковых версиях браузера (1,0,7) - работает по разному -на одной машине все нормально работает и табличка формируется, на другой (мне почему то кажется что из-за 2 го сервис пака Винды) - табличка не формируется вообще. Консоль при этом молчит.
Второй глюк - по нажатию на заголовок следующий за ним список должен развернуться или свернуться (в зависимости от флажка). Вопрос каким образом обойти свойство nextSibling. Впрямую адресоваться к списку я немогу - он не всегда отображаеся.
Как обрабатывается событие евент для Файрфокса?
Отсутствует
на одной машине все нормально работает и табличка формируется, на другой (мне почему то кажется что из-за 2 го сервис пака Винды) - табличка не формируется вообще. Консоль при этом молчит.
Если браузер и страница одинаковые, то дело в настройках. Может, на 2-м JavaScript просто отключен?
Второй глюк - по нажатию на заголовок следующий за ним список должен развернуться или свернуться (в зависимости от флажка). Вопрос каким образом обойти свойство nextSibling. Впрямую адресоваться к списку я немогу - он не всегда отображаеся.
Эта, примерчик-бы. А то что-то не пойму, в чем проблема.
Как обрабатывается событие евент для Файрфокса?
http://developer.mozilla.org/en/docs/DOM:event
Отсутствует
2 administrator
Извиняюсь что не туда прицепил...
2 snick
Что касается отображения таблицы - -дело было не в паке винды, просто на одной из машин запускалась неправленая версия... На самом деле не отображается табличка, которая генерится с помощью скрипта ни на одной машине...
Что касается разворачивания. Есть заголовок, который и вызывает эту функцию. По нажатию на него список должен либо свернуться либо развернуться.
вот кусок кода (функция, отвечающая за разворот)
var flag=true; function accordeon(el) { if(flag) { el.nextSibling.style.display="none"; flag=false; } else { el.nextSibling.style.display="block"; flag=true; } }
Отсутствует
А зачем нужен флаг? Не проще ли написать:
function accordeon(el) { with (el.nextSibling.style) display=(display=="none")?"block":"none"; }
НО!
Очень возможно, что nextSibling'ом у вас не ожидаемый следующий <li>, а узел типа #text (перевод строки, случайный пробели и т.д.). Надо это дело обходить.
Плюсики рисовать здесь: [ ]
Отсутствует
rewue
profiT прально говорит, если откроешь DOM Inspector, то увидишь, что следующим элементом будет не список, а #text. Поэтому:
function accordeon(el) { var NextEl=el.nextSibling; while (NextEl.tagName!='UL') NextEl=NextEl.nextSibling; with (NextEl.style) display=(display=="none")?"block":"none"; }
Отсутствует
А зачем нужен флаг? Не проще ли написать:
Выделить кодКод:
function accordeon(el) { with (el.nextSibling.style) display=(display=="none")?"block":"none"; }НО!
Очень возможно, что nextSibling'ом у вас не ожидаемый следующий <li>, а узел типа #text (перевод строки, случайный пробели и т.д.). Надо это дело обходить.
Следующий узел точно не текстовый - проверено. Да этих елементов 4 штуки и в одном так и было, но в остальных все нормально...
Отсутствует
Народ, я вот сходил по ссылке, что мне Snik дал и чего то я там не догоняю. Вроде как обработчик написан правильно а ничего не работает...
Вот что мне нужно
Есть заголовок. При клике по нему должна выполняться функция - какая сейчас не важно. Главное что она должна запуститься...
Отсутствует
...Есть заголовок. При клике по нему должна выполняться функция...
?
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
rewue
Следующий узел точно не текстовый - проверено. Да этих елементов 4 штуки и в одном так и было, но в остальных все нормально..
Сегодня нет, а завтра - есть. Вдруг строчку перенести захочется? Дополнительную проверку и защиту от дурака в программировании никто не отменял.
Да, если таких заголовков не 1, а много, то рулит такое:
var tags = document.getElementsByTagName("H1"); for (var i=0; i<tags.length; i++) { (tags[i]).onclick=ClickProcessingFunction; } }
Отсутствует
2 Snick
Ну про защиту от дурака я не спорю. В конце концов дописать одну строку несложно.
Блин все заработало... Просто я обозвал дивижн куда вставляю таблицу зарезервированным именем и из-за этого все скрипты перестали работать под Фоксом...
Только вот теперь новая беда - тот дивижн куда вставляю табличку сгенерированную скриптом "плывет" - т.е. не воспринимает CSS разметку. Такая штука бывает иногда при объявленном ДТД - но их я уже поубирал и в Опере и В Експлорере все нормально...
Отсутствует
rewue
Честно говоря, если ошибка убирается при устранении DTD в IE, значит код страницы совсем плох. С DTD IE пытается более-менее как надо страницы строить. А без-совсем уж по-своему. В FF без DTD обработка больше похожа не IE-шную с DTD.
Отсутствует
Страницы: 1