Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   смена CSSна сайте в зависимости от дня недели (https://javascript.ru/forum/dom-window/13723-smena-cssna-sajjte-v-zavisimosti-ot-dnya-nedeli.html)

castor 10.12.2010 23:26

new Date().getDay()
Только 0 соответствует вс.
Если нужно привести к виду пн - 0, вт - 1, ..., вс - 6, то так:
(new Date().getDay() + 6) % 7

Ну и вместо генерации аж 7(!) файлов есть работа со стилями
document.styleSheets - массив таблиц
addRule(), insertRule() - методы конкретной таблицы (для IE и остальных)

Плюс - не нужно отдельных запросов, все делается в одном скрипте.

Цитата:

c помощью метода day объекта Date
Нет такого метода. Есть getDay().

monolithed 10.12.2010 23:48

Цитата:

Сообщение от castor
Только 0 соответствует вс.

в конкретном случае не важно

Цитата:

Сообщение от castor
Ну и вместо генерации аж 7(!)

А если нужно менять полностью стиль страницы?

Цитата:

Сообщение от castor
document.styleSheets - массив таблиц
addRule(), insertRule() - методы конкретной таблицы (для IE и остальных)

addRule(), insertRule() - IE, Safari 4.0+, Chrome 4+

Цитата:

Сообщение от castor
Плюс - не нужно отдельных запросов, все делается в одном скрипте.

А кто спорит


Самый простой способ менять стиль элемента в зависимости от дня недели:
<script type="text/javascript">
window.onload = function(){
    var array = ['#DC1C1C', '#1CCCDC', '#1CDC6C', '#425C4D', '#B8DC00', '#DC00B6', '#A2A2A2'];
    document.getElementsByTagName('div')[0].style.background = array[new Date().getDay()];
};
</script>
<div style="width: 200px; height: 200px;"></div>

рони 11.12.2010 11:03

monolithed, интересно это зачем? )))
<script type="text/javascript">
window.onload = function(){
    var array = ['#DC1C1C', '#1CCCDC', '#1CDC6C', '#425C4D', '#B8DC00', '#DC00B6', '#A2A2A2'], i = array.length;
*!*
   while(i--){
        array.push(i);
    }
*/!*
    document.getElementsByTagName('div')[0].style.background = array[new Date().getDay()];
};
</script>
<div style="width: 200px; height: 200px;"></div>

monolithed 11.12.2010 11:41

рони, ага тупанул что-то (с предыдущих примеров осталось)))

x-yuri 11.12.2010 11:50

я считаю, самый оптимальный вариант - на сервере назначать body нужный класс(mon, tue, wed...), а в css переопределять нужные свойства в зависимости от наличия того или иного класса. Таким образом, не размазываем css по html и имеем разные значения свойств друг возле друга:
.mon div {
    background: red;
}
.tue div {
    background: green;
}
.wed div {
    background: blue;
}

Sweet 11.12.2010 12:01

Цитата:

Сообщение от monolithed
с предыдущих примеров осталось

Так а тут зачем цикл? Не проще просто инициализировать весь массив, там же не так много элементов:
<script type="text/javascript">
window.onload = function(){
    document.getElementsByTagName('link')[0].setAttribute('href', 'style'+[0,1,2,3,4,5,6][new Date().getDay()]+'.css');
};
</script>

Sweet 11.12.2010 12:08

А, вообще, думаю, что это не лучшая идея, загружать страницу, а потом перерисовывать ее, подгружая цсс:)

Aetae 11.12.2010 16:49

Цитата:

Сообщение от Sweet (Сообщение 83304)
А, вообще, думаю, что это не лучшая идея, загружать страницу, а потом перерисовывать ее, подгружая цсс:)

Можно по-старинке)) :
<script type="text/javascript">document.write('<link rel="stylesheet" href="style_' + new Date().getDay() + '.css">')</script>


А вообще - решение по-любому надо делать на серваке.

castor 11.12.2010 16:58

Цитата:

Можно по-старинке))
Это вообще-то называется "через ж..у". Писать в body style или link - как же непрофессионализм достал.
Цитата:

А вообще - решение по-любому надо делать на серваке.
А вообще - решение зависит от конкретных условий. Так что вовсе не по-любому.

Sweet 11.12.2010 17:32

Цитата:

Сообщение от castor
Писать в body style или link

А кто говорил про body? Имелось ввиду как раз наоборот, делать document.write именно в head


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