|
|
Модератор форума: JonMagon |
Сообщество uCoz » Вебмастеру » JavaScript, Flash и прочие технологии » JavaScript » Проблема с работоспособностью скрипта (Модуль Форум). (Скрипт работает только на главной странице форума.) |
Проблема с работоспособностью скрипта (Модуль Форум). |
Здравствуйте. Прошу помощи с решением проблемы в работоспособности скрипта. Скрипт самописный, и направлен на изменение вида таблиц форума. Скрины и скрипт прилагаю. Также адрес сайта, где я провожу адаптацию шаблона под систему uCoz. Проблема в том, что скрипт без проблем работает на главной странице форума, а непосредственно на страницах разделов - даже не запускается - подскажите в чём моя ошибка. Заранее благодарю!
Итак: Код function f_module(){ var si = document.getElementsByClassName("gTable").length; var catLink = document.getElementsByClassName("catLink")[0].innerHTML; var TopicName = document.getElementsByClassName("gTableSubTop")[2].innerHTML; var Answers = document.getElementsByClassName("gTableSubTop")[3].innerHTML; var Updates = document.getElementsByClassName("gTableSubTop")[4].innerHTML; var ForumDescTopic = document.getElementsByClassName("forumLastPostTd")[0].innerHTML; //topic items var PostDateAdd = document.getElementsByClassName("forumLastPostLink")[0].innerHTML; var PostUserName = 'От '+document.getElementsByClassName("lastPostUser")[0].innerHTML+'<br/>'+PostDateAdd; var StatRecord= document.getElementsByClassName("statsRecord")[0].innerHTML; var StatInfo = document.getElementsByClassName("gTableBody1")[0].innerHTML; var newCLink = '<span style="padding-right:25px;">' + TopicName + '</span><span style="padding-right:25px;">' + Answers + '</span><span style="padding-right:100px;">' + Updates + '</span>'; var cLink = '<span style="float:right;">'+newCLink+'</span>'; document.getElementsByClassName("catLink")[0].href="#"; document.getElementsByClassName("catLink")[0].innerHTML+= cLink; document.getElementsByClassName("forumLastPostTd")[0].innerHTML = PostUserName; //box who is delete document.getElementsByClassName("gTable")[(si-1)].style.display="none"; //del funcBlock document.getElementsByClassName("funcBlock")[0].style.display="none"; //rebuild statistic info and replace it document.getElementsByClassName("statInfo")[0].innerHTML += StatRecord; //document.getElementsByClassName("gTableTop")[0].style.display = 'none'; }; Так выглядит таблица с работоспособным скриптом: Вид таблицы форума, на странице со списком подфорумов и тем: Адрес форума: Сайт ТЫЦ |
Zeddicus, во-первых, getElementsByClassName использовать крайне не рекомендую. Он реализован далеко не во всех браузерах. Тем более, что jQuery подключен автоматически и на нем все это выглядит приятнее.
Но вернемся к проблеме. Класс gTableBody1 присутствует только на главной странице. Следовательно, результатом выполнения document.getElementsByClassName("gTableBody1") на других страницах будет пустой список. И у него не будет элемента со свойством innerHTML. Прежде, чем обращаться к элементу нужно проверить - нашлось ли что-то. Код var StatInfo = document.getElementsByClassName("gTableBody1"); if (StatInfo.length > 0) { StatInfo = StatInfo[0].innerHTML; //здесь же делаем все, что нужно с элементом } Сообщение отредактировал $Tiny$ - Четверг, 08 Янв 2015, 23:37:22
|
| |||
| |||