Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   JS смена style.css! (https://javascript.ru/forum/misc/7825-js-smena-style-css.html)

karakym 22.02.2010 18:17

Большое спасибо!))
Вот хотел перейти на селекты, но увы!(
<select>
<option onclick="setDynCSS('temp/opera/style.css')">Opera</option>
<option onclick="setDynCSS('temp/default/style.css')">Default</option>
<option onclick="setDynCSS('temp/green/style.css')">Green</option>
</select>

Селекты сделал а кнопку незнаю как сделать!(

vk65535 22.02.2010 22:20

Не совсем понял, о какой кнопке речь.

karakym 23.02.2010 08:32

Ну смотри я селектом выбираю опцию(стиль), и когда я выбрал мне надо нажать кнопку которая присвоит выбраную опцию(стиль)!

vk65535 23.02.2010 12:00

<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<link id="dynCSS" rel="stylesheet" type="text/css" href="">
<script type="text/javascript">
DynCSS = {
	css: [
		{ title: 'CSS1', url: '/pathto/css1.css' },
		{ title: 'CSS2', url: '/pathto/css2.css' },
		{ title: 'CSS3', url: '/pathto/css3.css' }
	],
	id2e: function(id) { return document.getElementById(id); },
	init: function() {
		this.renderOptions();
		var icss = (icss = String(document.cookie).match(/\bdyncss=([^;]*)/)) && icss[1];
		this.setCSS(icss);
	},
	setCSS: function(icss) {
		var s = this.id2e('dynCSSSelect');
		if (!arguments.length) icss = s.value;
		else s.value = this.css[icss = parseInt(icss) || 0] ? icss : 0;
		var css = this.css[icss];
		this.id2e('dynCSS').href = css.url;
		var d = new Date();
		d.setFullYear(d.getFullYear() + 1);
		document.cookie = ['dyncss=', icss, ';expires=', d.toGMTString(), ';path=/;'].join('');
		return this;
	},
	renderOptions: function() {
		for (var i = 0, s = this.id2e('dynCSSSelect'); i < this.css.length; ++i)
			s.options.add(new Option(this.css[i].title, i));
	}
};
</script>
</head>
<body>
<select id="dynCSSSelect"></select>
<button type="button" onclick="DynCSS.setCSS()">go</button>
<script type="text/javascript">DynCSS.init();</script>
</body>
</html>

karakym 23.02.2010 16:55

В IE работает, а вот в Опере и Мозилле нет!((

vk65535 23.02.2010 17:59

Хмм, у меня везде работает. Проверьте url-ы css-ов.

karakym 23.02.2010 18:36

Где надо библиотеку ставить между тегами шапки?

vk65535 23.02.2010 19:00

Какую библиотеку?
Может вам будет проще выложить сюда ваш исходник?

karakym 23.02.2010 20:18

Все проблема решена!))
Просто IE не чуствителен к Регистру а вот Opera и Mozilla даже очень!)

<link id="[COLOR="Red"][U][B]dyncss[/B][/U][/COLOR]" rel="stylesheet" type="text/css" href="temp/default/style.css">

Жирное подчеркнутое слово в исходнике, было вот таким!
А надо было dynCSS!
Большое спасибо!)

Я сейчас еще тему создам, вопрос есть еще!))

subzey 25.02.2010 11:34

Вложений: 2
Кстати, товарищи, знаете ли Вы, что ничего особо нового придумывать не надо?

При подключении css можно использовать rel="alternate stylesheet", и тогда браузер (по крайней мере, Опера и Файрфокс точно) позолит пользователю выбрать скину самостоятельно.

А всё, что нужно для «других» браузеров — скриптом поменять у нужного стиля rel на "stylesheet", а у ненужных стилей — на "alternate stylesheet".

В аттаче — пример.


Часовой пояс GMT +3, время: 22:13.