Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Полная смена css (https://javascript.ru/forum/misc/11592-polnaya-smena-css.html)

Johan 02.09.2010 01:03

Полная смена css
 
Мне нужен скрипт смены дизайна (то есть смены css) Вот в паблике я нашел скрипт Нажмите сюда! но он не доработан.... на сайте укоза там как бы сайт разделен http://domain.ru/ и http://domain.ru/index/ поэтому когда я меняю на странице дизайн (css) то он не меняется http://domain.ru/index/ и наоборот....
Заранее спасибо

ksa 02.09.2010 08:54

Johan, куда проще и продуктивнее сделать простой тестовый пример и выложить его тут.
Может тебе его и подправят...

Johan 02.09.2010 21:57

Сам скрипт


function getCookie(c_name)  
{  
if (document.cookie.length>0)  
{  
c_start=document.cookie.indexOf(c_name + "=");  
if (c_start!=-1)  
{  
c_start=c_start + c_name.length+1;  
c_end=document.cookie.indexOf(";",c_start);  
if (c_end==-1) c_end=document.cookie.length;  
return unescape(document.cookie.substring(c_start,c_end));  
}  
}  
return "";  
}  

function setCookie(c_name,value,expiredays)  
{  
var exdate=new Date();  
exdate.setDate(exdate.getDate()+expiredays);  
document.cookie=c_name+ "=" +escape(value)+  
((expiredays==null) ? "" : ";expires="+exdate.toGMTString());  
}  

var diz = getCookie('mydiz') ? getCookie('css1') :'styles1';  
document.write('<link type="text/css" rel="StyleSheet" href="http://poligon09.do.am/'+diz+'.css">');  

function dizsave() {  
setCookie('mydiz',document.getElementsByName('mdiz')[0].value, 365);  
location.reload();  
}



Смена
Код:

<select name="mdiz"> 
<option value="css1" selected="selected">Темный</option> 
<option value="css2">Светлый</option> 
</select> 
<input type="button" name="save" onclick="dizsave(); return true;" value="Сохранить" />


Вот я создал сайт специально на укозе что бы показать проблему http://poligon09.do.am/

я создал 2 ксс, 1 - стандартный 2 - поменял верхний беграунд и цвет шрифта

слева менять дизайн

когда меняешь дизайн на главной странице - тобишь http://poligon09.do.am/, диз меняется везде во всех модулях, кроме страниц http://poligon09.do.am/index/ - а это профиль, лс, и дополнительные страницы - вот например такие как hhhhhhhhhh в меню, а если сменить дизайн на той же страницы hhhhhhhhhh то он сменится только на страницах http://poligon09.do.am/index/ (профиль лс итп)
Что бы посмотреть ник и пароль на сайте test

Johan 03.09.2010 16:50

хелп

Johan 04.09.2010 10:29

плиз

monolithed 04.09.2010 14:26

<link rel="stylesheet" type="text/css" href="style1.css" />
<script type="text/javascript">

window.onload = function(){
    var selectedElem = document.getElementById("menu").getElementsByTagName('select');
	var getElemsName = document.getElementsByTagName('link');
	var getStyleName = "style2.css"; //название нового подключаемого файла
    for(i=0; i<selectedElem.length; i++) {
        selectedElem[i].onchange = function(){
			for(i=0; i<getElemsName.length; i++){
				var getOldElem = getElemsName[i].getAttribute("href") ;
				if (getElemsName[i].hasAttribute("href") && getElemsName[i].getAttribute("href") != getStyleName){
					getElemsName[i].removeAttribute('href');
					getElemsName[i].setAttribute("href", getStyleName);
					alert('Файл ' + getOldElem+ ' изменент на ' + getElemsName[i].getAttribute("href"));
				}
			}
        }
        selectedElem[i].onfocus = function() {
        this.form.reset();
        }
    }
}
</script>

<div id="menu">
	<form action="">
	<select>
		<option selected="selected" value="0"> - - - выберите - - - </option>
		<option value="1">изменить стиль страницы</option>
	</select>
	</form>
</div>

Johan 04.09.2010 21:14

monolithed, о можно с куками? и как сделать если у меня не 2 css

inGray 04.09.2010 23:19

"А кушать вы что, тоже за меня будете?" © "Двое из ларца"

monolithed 05.09.2010 00:23

<link rel="stylesheet" type="text/css" href="style1.css" />
<script type="text/javascript">

window.onload = function(){
    var selectedElem = document.getElementById("menu").getElementsByTagName('select');
	var getElemsName = document.getElementsByTagName('link');
    for(i=0; i<selectedElem.length; i++) {
        selectedElem[i].onchange = function(){
			for(i=0; i<getElemsName.length; i++){
				var getStyleName = this.options[this.selectedIndex].value;
				var getOldElem = getElemsName[i].getAttribute("href");
				var expires = new Date();
					expires.setTime(expires.getTime() + (365 * 24 * 60 * 60 * 1000));
				if (getElemsName[i].hasAttribute("href") && getElemsName[i].getAttribute("href") != getStyleName){
					getElemsName[i].removeAttribute('href');
					getElemsName[i].setAttribute("href", getStyleName);
					document.cookie = 'style' + '=' + encodeURIComponent(getStyleName) + '; expires=' + expires.toGMTString() + '; path=/; domain=' + window.location.hostname;
					alert('Файл ' +getOldElem+ ' изменент на ' +getCookie('style'));
				}
			}
        }
		function getCookie(name) {
			var regexp = new RegExp("(?:; )?" + name + "=([^;]*);?");
			if(regexp.test(document.cookie)){
				return decodeURIComponent(RegExp["$1"]);
			}
			return false;
		}
        selectedElem[i].onfocus = function() {
			this.form.reset();
        }
    }
};
</script>

<div id="menu">
	<form action="">
	<select>
		<option disabled="disabled" selected="selected" value="0"> - - - Выберите - - - </option>
		<option value="style1.css">style1</option>
		<option value="style2.css">style2</option>
		<option value="style3.css">style3</option>
	</select>
	</form>
</div>


PS: не забудьте положить подключаемые файлы на сервер и помните, что это черновой вариант, который возможно требует доработок.

Johan 05.09.2010 14:27

monolithed спасибо, но смотри, я поставил скрипт на http://poligon09.do.am/, и смотри, теперь на страницах http://poligon09.do.am/index/, вообще ксс не распознает, и даже не меняется, куки тоже не распознаются..

monolithed 05.09.2010 15:02

У меня все работает! У вас style1 и style2 подключены, а style3 нет!
Также я писал, что это черновой вариант, который требует доработок, сейчас у меня нет свободного времени чтобы это делать за вас!

Johan 05.09.2010 15:10

я знаю что 3его нет, зайди на страницу hhhhhhhhhh...... а за деньги поможешь? готов заплатить.....

monolithed 05.09.2010 15:33

На форуме есть раздел работа там с удовольствием и быстро помогут. Но лично мое мнение, что лучше самому решить эту задачу т.к. сложного там ничего, вопрос времени.

ps:
1. вообще сохранять в кукисах такие вещи не есть хорошо, т.к. у людей может быть отключен JavaScript, правельней вести сессии на стороне сервера, но на вашем хостинге это не вариант...
2. стили на других страницах слетают потомому как они на них не подключаются. Отключите JavaScript в браузере и посмотрите!

monolithed 05.09.2010 15:43

<link rel="stylesheet" type="text/css" href="css1.css" />
замените на:
<link rel="stylesheet" type="text/css" href="http://poligon09.do.am/css1.css" />

и сразу увидите результат!


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