Как сказать «Сегодня» на Javascript

Я делаю простой плагин, который показывает часы работы магазина. Я закодировал это, и это выглядит довольно хорошо. Он выглядит как список, аналогичный тому, что я набрал ниже.

Понедельник – с 9:00 до 17:00
Вторник – с 9:00 до 17:00
Среда – с 9:00 до 17:00

...и так далее. Сгенерированный HTML выглядит так:

<div id="%id%container">
    <div id="%id%title">%text="Opening Hours"%</div>
    <ul class="%id%hours">
        <li>Monday<span>%text="9:00AM - 5:00PM"%</span></li>
        <li>Tuesday<span>%text="9:00AM - 5:00PM"%</span></li>
        <li>Wednesday<span>%text="9:00AM - 5:00PM"%</span></li>
        <li>Thursday<span>%text="9:00AM - 5:00PM"%</span></li>
        <li>Friday<span>%text="9:00AM - 5:00PM"%</span></li>
        <li>Saturday<span>%text="9:00AM - 5:00PM"%</span></li>
        <li>Sunday<span>%text="9:00AM - 5:00PM"%</span></li>
    </ul>
</div>

Допустим, сегодня вторник. Вместо того, чтобы читать «Вторник», я бы хотел, чтобы вместо этого было просто «Сегодня». Есть ли способ сделать это только с помощью Javascript (на стороне клиента)?

Спасибо.


person Jeremy Blazé    schedule 04.01.2013    source источник
comment
Добро пожаловать в StackOverflow! Не могли бы вы показать, какой код вы использовали, чтобы отвечающие могли знать, как его изменить?   -  person David Robinson    schedule 04.01.2013
comment
Вместо того, чтобы помещать его в комментарий, не могли бы вы отредактировать его в своем сообщении (включая разрывы строк?). Также было бы неплохо сделать отступ, выбрав код и нажав команду-K   -  person David Robinson    schedule 04.01.2013
comment
новая дата().getDay()   -  person Alex Wayne    schedule 04.01.2013


Ответы (3)


Вот оно, чистое решение JS:

<div id="%id%container">
    <div id="%id%title">%text="Opening Hours"%</div>
    <ul class="%id%hours">
        <li>Monday<span>%text="9:00AM - 5:00PM"%</span></li>
        <li>Tuesday<span>%text="9:00AM - 5:00PM"%</span></li>
        <li>Wednesday<span>%text="9:00AM - 5:00PM"%</span></li>
        <li>Thursday<span>%text="9:00AM - 5:00PM"%</span></li>
        <li>Friday<span>%text="9:00AM - 5:00PM"%</span></li>
        <li>Saturday<span>%text="9:00AM - 5:00PM"%</span></li>
        <li>Sunday<span>%text="9:00AM - 5:00PM"%</span></li>
    </ul>
</div>
var dayNames = ["Sunday","Monday","Tuesday","Wednesday","Thirsday","Friday","Saturday"];
var dayOfWeek = new Date().getDay();
var dayOfWeekText = dayNames[dayOfWeek]
var elements = document.querySelectorAll('div[id="%id%container"] ul[class="%id%hours"] li');

window.onload = function(){
    for (var i=0; i < elements.length; i++ ){
        if (elements[i].innerHTML.indexOf(dayOfWeekText) != -1){
            elements[i].innerHTML = elements[i].innerHTML.replace(new RegExp(dayOfWeekText),'Today');
            return false;
        }
    }
}

JSFIDDLE

person SeinopSys    schedule 02.03.2013

Вы должны иметь возможность использовать метод getDay() в javascript, чтобы определить день недели, а затем программно заменить его.

http://www.w3schools.com/jsref/jsref_getday.asp

РЕДАКТИРОВАТЬ: после просмотра исходного кода я думаю, что было бы проще, если бы вы добавили атрибуты id в свои элементы списка для справки. Затем вы можете использовать какой-нибудь javascript, например следующий, если ваши идентификаторы были day0, day1, day2 и т. д.

<script type="text/javascript">
  var d = new Date();
  var obj = document.getElementById('day' + d.getDay);
  // TODO - replace day of the week on the 'obj' object
</script>

Не уверен, планируете ли вы использовать фреймворк javascript, такой как jQuery, или нет, но это сделало бы его немного менее подробным за счет включения источника.

person Michael Welburn    schedule 04.01.2013

Взгляните на moment.js. Это должно позволить вам делать именно то, что вы хотите.

person Lars Kotthoff    schedule 04.01.2013