|
JavaScript / HTML Создание динамической разметки страниц |
23.07.2012, 17:17
|
#1
|
Элита
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений (для 1,012 пользователей)
|
ВК+смайлы. Помогите со скриптом
whatrep=['=) :-)',';) ;-)']; torep=['SMILE','EYE'];
mask='<img src=#SMILEURL# alt="!!SMILE not find!!"></img>'; scan_class=['fc_msg','dialogs_msg_text','pad_msg_text']; //переписанный код замены function exreplace(text,from,to) { var tmp=text; var strarr=from.split(" ");
for(var i=0;i<strarr.length;i++) tmp=tmp.split(strarr[i]).join(to); return tmp; } //сама замена function repsmile(text) { var tmp=text; for(var i=0;i<whatrep.length;i++) { var mathto=mask.replace('#SMILEURL#',torep[i]); tmp=exreplace(tmp,whatrep[i],mathto); } return tmp; } //Место где искать function finddiv() { alert("script start"); var obj=document.getElementsByTagName('div'); for(var i=0;i<obj.length;i++) { for(var n=0;n<scan_class.length;n++) { if(obj[i].className.substr(0,scan_class[n].length)==scan_class[n]) { alert(obj[i].innerHTML); obj[i].innerHTML=repsmile(obj[i].innerHTML); } } } } finddiv();
Написал код, собрал плагин для Мазилы, он просто подгружает на страницу левый скрипт.
Скрипт запускается (алерт вылетает), но второй, который в цикле,НЕТ.
На симуляторе ВК (тупо страница с DIV нужных классов) работает, то есть меняет "=) " на картинку.
В чем проблема может быть (на говногод не глядеть)?
И как можно сделать запуск finddiv() после изменения страницы?
|
(Offline)
|
|
23.07.2012, 17:49
|
#2
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Ответ: ВК+смайлы. Помогите со скриптом
Для дебага, используй console.log() и консоль в броузере (не IE).
Далее выведи сперва данные по прохождению цикла, например количество найденных объектов по тэгу, далее выведи сам класс, и результат проверки класса потом.
Также если хочешь проверить есть ли класс, лучше используй не substr, а indexOf для проверки наличия класса. Типо так:
obj[i].className.indexOf(scan_class[n]) != -1
|
(Offline)
|
|
23.07.2012, 18:04
|
#3
|
Элита
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений (для 1,012 пользователей)
|
Ответ: ВК+смайлы. Помогите со скриптом
Сообщение от MoKa
Для дебага, используй console.log() и консоль в броузере (не IE).
Далее выведи сперва данные по прохождению цикла, например количество найденных объектов по тэгу, далее выведи сам класс, и результат проверки класса потом.
Также если хочешь проверить есть ли класс, лучше используй не substr, а indexOf для проверки наличия класса. Типо так:
obj[i].className.indexOf(scan_class[n]) != -1
|
Вопрос, а если атрибут class="lolo lolol olol"-'это один класс или объект к нескольким относиться?
|
(Offline)
|
|
23.07.2012, 18:23
|
#4
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Ответ: ВК+смайлы. Помогите со скриптом
Это несколько классов относятся к этому элементу.
Например у я использую такие классы у двух элементов: 'arrow left'; 'arrow right'.
Таким образом можно писать стили для стрелочек, и отдельные дополнения для левой и правой.
Всегда рассчитывай на то что классов может быть больше чем один.
Также используй Inspector в Chrome или FireBug в Firefox чтобы просматривать удобно разметку и классы прямо на странице.
|
(Offline)
|
|
23.07.2012, 18:27
|
#5
|
Элита
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений (для 1,012 пользователей)
|
Ответ: ВК+смайлы. Помогите со скриптом
проверил, console.log(obj.length) вообще вернуло null, как так, хотя бы 0 должен.
скачал сдк для дополнений фаефокс,но при установке не в дебаг режиме не ставит, а пишет что не совместима, че делать
|
(Offline)
|
|
23.07.2012, 19:39
|
#6
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Ответ: ВК+смайлы. Помогите со скриптом
На счёт Firefox, хз что ты там качаешь, вот ссылка: http://getfirebug.com/
На счёт длины списка объектов. Да null не должен быть, следственно что-то не так. Ты уверен что null эта строка выдала, также нет каких либо ошибок ещё?
Если сделаешь пример на jsfiddle.net, то смогу помочь с JS.
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 09:12.
|