Как присвоить классы в скрипте?
Здравствуйте.
JS не владею, но жизнь принуждает к добровольным действиям, итак, есть скрипт выводящий на сайте время и дату. Очень хочется присвоить времени и дате отдельные классы, что бы стилизовать в css. Не подскажите как это сделать? Вот сам скрипт:
(function (global) {
"use strict";
function Clock(el) {
var document = global.document;
this.el = document.getElementById(el);
this.months = ['Янв', 'Фев', 'Марта', 'Апр', 'Мая', 'Июня', 'Июля', 'Августа', 'Сент', 'Окт', 'Нояб', 'Дек'];
this.days = ['Вс', 'Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб'];
}
Clock.prototype.addZero = function (i) {
if (i < 10) {
i = "0" + i;
return i;
}
return i;
};
Clock.prototype.updateClock = function () {
var now, year, month, dayNo, day, hour, minute, second, result, self;
now = new global.Date();
year = now.getFullYear();
month = now.getMonth();
dayNo = now.getDay();
day = now.getDate();
hour = this.addZero(now.getHours());
minute = this.addZero(now.getMinutes());
second = this.addZero(now.getSeconds());
result = this.days[dayNo] + ". " + day + " " + this.months[month] + ". " + year + " - " + hour + ":" + minute;
self = this;
self.el.innerHTML = result;
global.setTimeout(function () {
self.updateClock();
}, 1000);
};
global.Clock = Clock;
}(window));
function addEvent(elm, evType, fn, useCapture) {
"use strict";
if (elm.addEventListener) {
elm.addEventListener(evType, fn, useCapture);
} else if (elm.attachEvent) {
elm.attachEvent('on' + evType, fn);
} else {
elm['on' + evType] = fn;
}
}
addEvent(window, "load", function () {
if (document.getElementById("clock")) {
var clock = new Clock("clock");
clock.updateClock();
}
});
|
Ubivectel,
result = "<span class='day'>" +this.days[dayNo] + ". " + day + " " + this.months[month] + ". " + year + "</span> - <span class='time'>" + hour + ":" + minute + "</span>"; |
Спасибо рони, все работает как надо ))
|
Не стал создавать новую тему, ибо вопрос очень похожий. Имеется чат, когда приходит личное сообщение, под списком юзеров появляется аватар и ник отправителя, аватар вот с таким стилем ('border', '2px solid red') прописанном в JS. После клика на нем открывается окно сообщений, а стиль аватара меняется на ('1px solid black'). Хотелось бы что бы стиль присваивал не JS а менял класс или айди аватара, что бы оформить его уже в css.
Вот интересующие строчки кода:
kide.privados.aviso = function(alias) {
kide.css ('KIDE_privados_avatar_'+alias, 'border', '2px solid red');
Этого наверное недостаточно, вот ссылка на сам файл: https://noviy-kovcheg.ru/components/...ult/js/kide.js |
Ubivectel,
пробуйте, заменить kide.css на
kide.$('KIDE_privados_avatar_'+alias).classList.add('red_privados');
вместо red_privados указать нужный класс. |
Ситуация выглядит следующим образом:
с дефолтным кодом JS в инспекторе браузера я вижу следующее: <img alt="" onclick="kide.privados.maximizar(1,true)" style="cursor: pointer; border: 2px solid red;" id="KIDE_privados_avatar_1" class="KIDE_avatar" src="http://www.gravatar.com/avatar/d120239cc325270cf181fa50d9d69a85?s=50&d=wavatar"> При клике на аватаре (он же открывает сообщение) значение атрибута style, меняется на "cursor: pointer; border: 1px solid white;" При свернутом окне сообщений при поступлении нового стайл опять меняется на красный бордер. когда сменил строку на
kide.$('KIDE_privados_avatar_'+alias).classList.add('red_privados');
вместо изменения стиля соответственно присваивается указанный класс, но он не исчезает при открытии сообщения, то есть постоянно сигнализирует о получении нового. По моему задача сложнее чем мне казалось :( |
Сорри, неверно написал, пока окно сообщений свернуто, style остается : "cursor: pointer; border: 1px solid white;"
И только при поступлении нового меняется на: "cursor: pointer; border: 2px solid red;" |
Вряд ли кому-то пригодится, но скрипя мозгами решил вопрос следующи образом, заменил это:
kide.css ('KIDE_privados_avatar_'+alias, 'border', '2px solid red');
На это:
kide.$('KIDE_privados_avatar_'+alias).classList.add('red_privados');
далее нашел строку меняющую стиль при прочтении сообщения:
kide.css('KIDE_privados_avatar_'+alias, 'border', '1px solid white');
И по подсказке рони вместо измения стиля, вписал удаление класса:
kide.$('KIDE_privados_avatar_'+alias).classList.remove('red_privados');
Возможно решение не идеально, но цель достигнута. Рони спасибо за "удочку" :) |
Ubivectel,
:victory: |
| Часовой пояс GMT +3, время: 01:30. |