Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Смена класса для DIV блока каждый месяц (доработать) (https://javascript.ru/forum/misc/63037-smena-klassa-dlya-div-bloka-kazhdyjj-mesyac-dorabotat.html)

denka977 13.05.2016 16:11

Смена класса для DIV блока каждый месяц (доработать)
 
Здравствуйте!

Вопрос не сложный, но не для меня :)
Есть готовый и рабочий код, но он работает только относительно контейнера body.

Нужно, чтобы тег class дописывался в зависимости от месяца для, например, DIV блока, а не для body, как в примере:

<div id="test1"></div> // - для этого блока нужно менять (дописывать class)

JS код:

<script language="javascript" type="text/javascript">
var d = document;
var kodabramonth = {
    '1':'on',
    '2':'tw',
    '3':'no',
    '4':'qu',
    '5':'od',
    '6':'sx', // для <body> дописывается class "sx", если месяц по счету шестой.
}
window.onload = function()   {
    var body = d.body;
    var head = d.getElementsByTagName('body')[0];
    var dat = new Date();
    var m = dat.getMonth();
    m++;
    var curclass = kodabramonth[+m];
    if(curclass) body.className = curclass;
}
</script>

denka977 13.05.2016 19:39

Цитата:

Сообщение от Rise (Сообщение 416455)
denka977,
window.onload = function() {
	var m = ['on', 'tw', 'no', 'qu', 'od', 'sx'], i = new Date().getMonth();
	if (i in m) document.getElementById('test1').className = m[i];
}

Гениально просто, скрипт работает. Полностью копирую рабочий код с тестовым div контейнером на интернет сайт, а вот там почему-то код не работает. Вне зависимости от местоположения скрипта и наличия посторонних скриптов - результат неудовлетворительный. В чем может таится причина?

denka977 13.05.2016 19:59

Цитата:

Сообщение от Rise (Сообщение 416474)
denka977, смотрите ошибки в консоли F12

Определил, что скрипт все-таки работает на страницах, где нет другого скрипта, который тоже использует window.onload.

Такой скрипт:

<script>
var script = document.createElement('script');
script.src = 'сайт/ad.js';
		window.onload = function(){
			var a = document.getElementsByName('cut')[0];
            a.appendChild(script);
			a.innerHTML = '<div class="ad123">123</div>';
		}
</script>

denka977 13.05.2016 20:16

Решил это через

<script>
window.onload=function() {
         script1();
         script2();
}
</script>


с заменой в каждом скрипте window.onload на var script1 и var script2 соответственно. Спасибо!

denka977 13.05.2016 20:22

Цитата:

Сообщение от Rise (Сообщение 416455)
denka977,
window.onload = function() {
	var m = ['on', 'tw', 'no', 'qu', 'od', 'sx'], i = new Date().getMonth();
	if (i in m) document.getElementById('test1').className = m[i];
}

Вот еще что, CSS стили не работают, не смотря на добавление class="on".
А вот если вручную прописать class="on", а не через скрипт, то css подцепляется. Загадка


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