Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Java / JavaScript


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Java/JavaScript

Выпуск № 439
от 25.09.2007, 12:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 365, Экспертов: 34
В номере:Вопросов: 1, Ответов: 2


Вопрос № 102746: Здравствуйте, эксперты. Хотел узнать, как сделать смену стиля страницы через селектор-список. Нашёл только смену фона. А мне хотелось бы, чтобы пользователь выбрал из списка. Пробовал (см. приложение) - не получилось. Скажите, что не так ...

Вопрос № 102.746
Здравствуйте, эксперты. Хотел узнать, как сделать смену стиля страницы через
селектор-список. Нашёл только смену фона. А мне хотелось бы, чтобы
пользователь выбрал из списка. Пробовал (см. приложение) - не получилось.
Скажите, что не так сделал.

Приложение:

Отправлен: 20.09.2007, 11:47
Вопрос задал: Кулаченко Антон (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Бородин Александр Олегович
Здравствуйте, Кулаченко Антон!
Ну еще бы оно работало! Тут даже мне видно, хотя я и полный профан в ЯваСкрипт. Ошибка в первой же строке. Вы подключаете файл стилей неправильно. Дело в том, что в Вашем случае браузер ищет файл "style.sel.options.value" и естественно, не находит. Понятное дело, что так делать нельзя. Я бы так сделал: сохранил бы значение списка в кукисах, а при перезагрузке страницы передал значение для подключения. Как внешний файл подключается, я точно не помню, навроде такого что-то:
document.style.src='адрес файла'.
Если брать Вашу модель, то на момент подключения таблицы стилей, ее адрес уже должон быть известен. То есть надо выбрать значение из списка ДО подключения, а у Вас получается после.
Принцип, короче, такой:
Выбрали значение - страницу перезагрузили - подключили. У Вас немного наоборот: подключили - выбрали значение - страницу не перезагружали.
Если не сохранять в кукисах, то при следующей загрузке страницы значение файла снова заменится на то, которое по умолчанию. То есть необходимо обеспечить перенос этого значения между страницами. Тогда Вы добьетесь, чего хотели.
---------
Ничто не сближает людей так, как совместное преступление.
Ответ отправил: Бородин Александр Олегович (статус: Студент)
Ответ отправлен: 20.09.2007, 13:08

Отвечает: Errandir
Здравствуйте, Кулаченко Антон!

То что у вас неправильно, вам уже сказали. А как сделать правильно?
Я придумал следующую комбинацию:
"style.css":
import url("style1.css");

Style.css имеет одно правило которое мы будем заменять. Это правило импортирует другую таблицу стилей. style1.css - таблица стилей по умолчанию.
"index.html":
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" href="style.css" type="text/css">
>
var addCSS = function(str) {
<-- удаляем правило import -->
document.styleSheets[0].deleteRule(0);
<-- добавляем правило import нужной таблицы стилей -->
document.styleSheets[0].insertRule('@import "' + str + '";', 0);
}
</script>
</head>
<body>
<-- выбор таблицы стилей -->
<input type="radio" name="style" onclick="addCSS('style1.css')" selected>s1<br>
<input type="radio" name="style" onclick="addCSS('style2.css')">s2<br>
</body>
</html>
Но большая проблема в том, что IE6 (насчёт 7 не знаю) не поддерживает модуль объектной модели DOM под названием StyleSheets. Однако и Firefox и Opera всё прекрасно отображают.

Надеюсь я хоть чем-то да помог...
---------
Si vox est - canta!
Ответ отправил: Errandir (статус: 5-ый класс)
Ответ отправлен: 20.09.2007, 13:46


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Техподдержка портала, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.60 от 22.09.2007
Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное