Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 20.03.2013, 10:31
Новичок на форуме
Отправить личное сообщение для yakto Посмотреть профиль Найти все сообщения от yakto
 
Регистрация: 20.03.2013
Сообщений: 5

Динамическая смена стилей после переноса на хостинг
День добрый уважаемым форумчанам!
Проблемка возникла после переноса сайта с локального хоста на web - перестал работать скрипт динамической смены стилей по клику.
В панели хрома наблюдаю ошибку: "Uncaught SyntaxError: Unexpected identifier ".
Сам скрипт:
function setActiveStyleSheet(title) {
  var i, a;
  for (i = 0; (a = document.getElementsByTagName("link")[i]); i++) {
    if (a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title")) {
      a.disabled = true;
      if (a.getAttribute("title") === title) a.disabled = false;
    }
  }
}

function getActiveStyleSheet() {
  var i, a;
  for(i = 0; (a = document.getElementsByTagName("link")[i]); i++ ) {
    if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title") && !a.disabled) return a.getAttribute("title");
  }
  return null;
}

function getPreferredStyleSheet() {
  var i, a;
  for(i = 0; (a = document.getElementsByTagName("link")[i]); i++ ) {
    if(a.getAttribute("rel").indexOf("style") != -1
       && a.getAttribute("rel").indexOf("alt") == -1
       && a.getAttribute("title")
       ) return a.getAttribute("title");
  }
  return null;
}

function createCookie(name,value,days) {
  if (days) {
    var date = new Date();
    date.setTime(date.getTime()+(days*24*60*60*1000));
    var expires = "; expires="+date.toGMTString();
  }
  else var expires = "";
  document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
  var nameEQ = name + "=";
  var ca = document.cookie.split(';');
  for(var i=0; i < ca.length; i++) {
    var c = ca[i];
    while (c.charAt(0)==' ') c = c.substring(1,c.length);
    if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
  }
  return null;
}

window.onload = function(e) {
  var cookie = readCookie("style");
  var title = cookie ? cookie : getPreferredStyleSheet();
  setActiveStyleSheet(title);
}

window.onunload = function(e) {
  var title = getActiveStyleSheet();
  createCookie("style", title, 365);
}

var cookie = readCookie("style");
var title = cookie ? cookie : getPreferredStyleSheet();
setActiveStyleSheet(title);

Вызов скрипта:
<div class="box">
	<a class="sw1" href="javascript:void(0)" onclick="setActiveStyleSheet('style'); return false;">Тема 1</a>
	<a class="sw2" href="javascript:void(0)" onclick="setActiveStyleSheet('i2'); return false;">Тема 2</a>
	<a class="sw3" href="javascript:void(0)" onclick="setActiveStyleSheet('i3'); return false;">Тема 3</a>
	<a class="sw4" href="javascript:void(0)" onclick="setActiveStyleSheet('i4'); return false;">Тема 4</a>
	<a class="sw5" href="javascript:void(0)" onclick="setActiveStyleSheet('i5'); return false;">Тема 5</a>
	</div>

При клике в хроме наблюдаю в панели ошибку:
"Uncaught ReferenceError: setActiveStyleSheet is not defined"
Бьюсь уже две недели, подскажите, в чем может быть проблема?

Последний раз редактировалось yakto, 20.03.2013 в 10:59. Причина: Дополнение
Ответить с цитированием
  #2 (permalink)  
Старый 20.03.2013, 11:29
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

В этом коде вроде нет ошибок. Проблема где-то выше в документе. Смотрите предыдущие скрипты.
Ответить с цитированием
  #3 (permalink)  
Старый 20.03.2013, 13:24
Новичок на форуме
Отправить личное сообщение для yakto Посмотреть профиль Найти все сообщения от yakto
 
Регистрация: 20.03.2013
Сообщений: 5

Выше, в хедере:
<link rel="stylesheet" type="text/css" href="style.css" media="screen" title="style"/>
<link rel="alternate stylesheet" type="text/css" href="css/i2.css" media="screen" title="i2"/>
<link rel="alternate stylesheet" type="text/css" href="css/i3.css" media="screen" title="i3" />
<link rel="alternate stylesheet" type="text/css" href="css/i4.css" media="screen" title="i4" />
<link rel="alternate stylesheet" type="text/css" href="css/i5.css" media="screen" title="i5" />
<script type="text/javascript" src="js/styleswitcher.js"></script>

На локалке все работает, ума не приложу, что может быть...
Ответить с цитированием
  #4 (permalink)  
Старый 20.03.2013, 14:50
Аспирант
Отправить личное сообщение для ILL-JAH Посмотреть профиль Найти все сообщения от ILL-JAH
 
Регистрация: 24.03.2011
Сообщений: 93

Что говорят консоли в дургих браузерах? В какой строке Uncaught SyntaxError: Unexpected identifier?
Ответить с цитированием
  #5 (permalink)  
Старый 20.03.2013, 15:33
Новичок на форуме
Отправить личное сообщение для yakto Посмотреть профиль Найти все сообщения от yakto
 
Регистрация: 20.03.2013
Сообщений: 5

Сообщение от ILL-JAH Посмотреть сообщение
Что говорят консоли в дургих браузерах? В какой строке Uncaught SyntaxError: Unexpected identifier?
В первой строке скрипта, но Chrome и открывает весь скрипт одной строкой.
В опере:
Linked script compilation. Syntax error at line 1 while loading: expected ';', got 'window'
В IE:
Предполагается наличие '}' - строка 1 символ 1897

Кто может посмотреть в других отладчиках или просто помочь разобраться, ссылка - http://am-fline.ru. Сам скрипт - styleswitcher.js.

Последний раз редактировалось yakto, 20.03.2013 в 15:55. Причина: Дополнение
Ответить с цитированием
  #6 (permalink)  
Старый 20.03.2013, 16:00
Аспирант
Отправить личное сообщение для ILL-JAH Посмотреть профиль Найти все сообщения от ILL-JAH
 
Регистрация: 24.03.2011
Сообщений: 93

Валидатор нашёл 59 ошибок и 35 предупреждений на странице http://am-fline.ru.
Ответить с цитированием
  #7 (permalink)  
Старый 20.03.2013, 16:09
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

На серваке куда-то пропали переносы строк. Попробуйте выбрать бинарный режим передачи файлов в вашем фтп-клиенте. Сама проблема в недостающих точках с запятой после window.onload и window.onunload свойств.
Ну и на ошибки указанные ILL-JAH забивать не стоит.
Ответить с цитированием
  #8 (permalink)  
Старый 20.03.2013, 17:00
Новичок на форуме
Отправить личное сообщение для yakto Посмотреть профиль Найти все сообщения от yakto
 
Регистрация: 20.03.2013
Сообщений: 5

Сообщение от ILL-JAH Посмотреть сообщение
Валидатор нашёл 59 ошибок и 35 предупреждений на странице http://am-fline.ru.
Ведутся технические работы
jslint.com заставляет даже оформлять код, хотя это не критично.
Сообщение от danik.js Посмотреть сообщение
Попробуйте выбрать бинарный режим передачи файлов в вашем фтп-клиенте. Сама проблема в недостающих точках с запятой после window.onload и window.onunload свойств.
Да, спасибо - бинарный режим, это то что надо.
Редактировал скрипт раз сто, уже не знаю, что повлияло на окончательный результат, но браузер ошибки не выдает. Пока работает некорректно, но знаю как исправить.
Большое спасибо за помощь.
Ответить с цитированием
  #9 (permalink)  
Старый 20.03.2013, 18:39
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Вот тут необходимы точи с запятой (проставил). Думаю jslint их подсказывает.
window.onload = function(e) {
  var cookie = readCookie("style");
  var title = cookie ? cookie : getPreferredStyleSheet();
  setActiveStyleSheet(title);
};
 
window.onunload = function(e) {
  var title = getActiveStyleSheet();
  createCookie("style", title, 365);
};
Ответить с цитированием
  #10 (permalink)  
Старый 21.03.2013, 08:17
Новичок на форуме
Отправить личное сообщение для yakto Посмотреть профиль Найти все сообщения от yakto
 
Регистрация: 20.03.2013
Сообщений: 5

Сообщение от danik.js Посмотреть сообщение
Вот тут необходимы точи с запятой (проставил). Думаю jslint их подсказывает.
Да, я понял, уже поставил. Все работает. Спасибо!!!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Смена таблицы стилей acvabalt Общие вопросы Javascript 12 21.07.2013 06:59
Смена стилей страницы при изменении размера окна браузера goooooch Javascript под браузер 6 19.11.2011 18:49
Смена css стилей stvord Элементы интерфейса 5 03.09.2011 21:10
Динамическая смена слоёв dima_mak Internet Explorer 2 03.10.2009 11:39
Динамическая смена рисунка на html, используя локальные рисунки с компа пользователя evgen28 Общие вопросы Javascript 9 27.03.2009 13:14