Страница 1 из 11
Модератор форума: JonMagon 
Сообщество uCoz » Вебмастеру » JavaScript, Flash и прочие технологии » JavaScript » Проблема с работоспособностью скрипта (Модуль Форум). (Скрипт работает только на главной странице форума.)
Проблема с работоспособностью скрипта (Модуль Форум).
Zeddicus
Сообщений: 2
Репутация: 0

Сообщение # 1 | 11:12:45
Здравствуйте. Прошу помощи с решением проблемы в работоспособности скрипта. Скрипт самописный, и направлен на изменение вида таблиц форума. Скрины и скрипт прилагаю. Также адрес сайта, где я провожу адаптацию шаблона под систему 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';
};

Так выглядит таблица с работоспособным скриптом:





Вид таблицы форума, на странице со списком подфорумов и тем:






Адрес форума: Сайт ТЫЦ
Прикрепления: 3454013.gif(18Kb) · 0901918.gif(16Kb) · 1629834.gif(17Kb)
$Tiny$
Сообщений: 193
Репутация: 61

Сообщение # 2 | 23:34:53
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
Zeddicus
Сообщений: 2
Репутация: 0

Сообщение # 3 | 14:34:01
$Tiny$, огромное спасибо за ответ!

вопрос закрыт.
Сообщество uCoz » Вебмастеру » JavaScript, Flash и прочие технологии » JavaScript » Проблема с работоспособностью скрипта (Модуль Форум). (Скрипт работает только на главной странице форума.)
Страница 1 из 11
Поиск: