2015-11-05 5 views
7

Я очень новичок в javascript/jquery. Написали следующий скрипт, он работает в Chrome 46.0.2490.80 м, но не в Firefox 42.0 или IE 11. Значения в формате %<value_name>% являются предопределенными значениями из используемой мной системы управления контентом.Javascript работает в chrome, а не в firefox или ie

Сценарий должен скрыть кнопку, если для логического значения "%asset_metadata_register_button%" установлено значение 0, или на следующий день после переменной даты "eventDate". В противном случае покажите кнопку.

Сценарий также должен изменить текст и значение href кнопки после eventDate.

HTML

<p id="show"><a id="change" class="button" href="firstURl">Register</a></p> 

Javascript

$(document).ready(function() { 
    // Boolean value from Show Registration Button metadata field 
    var number = "%asset_metadata_register_button%"; 

    // variable for start date of event 
    var eventDate = new Date('%asset_attribute_start_date%'); 

    // variable for date at present time 
    var now = new Date(); 

    // variable for one day after present time 
    var oneDay = new Date('%asset_attribute_start_date%'); 

    oneDay.setDate(oneDay.getDate() + 1); 

    // Hide button if Show Registration Button metadata field is set to no, or for one day after Webinar took place. Otherwise show Button. 
    if (number == 1) { 
     if (eventDate < now && now < oneDay) { 
      document.getElementById("show").innerHTML = "(Webinar will be uploaded shortly)"; 
     } else { 
      $('#show').show(); 
     } 
    } else { 
     $('#show').hide(); 
    } 

    // changes button text and link after webinar commences 
    if (eventDate > now) { 
     document.getElementById("change").innerHTML = "View Webinar"; 
     document.getElementById("change").href = "secondURL"; 
    } 
}); 
+2

В каком формате указана дата '% asset_attribute_start_date%' - моя догадка заключается в том, что это формат строки даты только хром понимает –

+0

Привет, спасибо за ответ ... его формат ISO8601, печатает на экране, как этот 2015-11- 04 01:30:00 – Erwin

+1

, если строка ввода «2015-11-04 01: 30: 00», тогда firefox не сможет ее проанализировать, и вы получите «Недействительную дату» –

ответ

0

As + Jaromanda X упомянули вы получите сообщение об ошибке с некоторыми браузерами.

Где ваш код выглядит следующим образом:

// variable for start date of event 
var eventDate = new Date('%asset_attribute_start_date%'); 

// variable for date at present time 
var now = new Date(); 

//variable for one day after present time 
var oneDay = new Date('%asset_attribute_start_date%'); 

oneDay.setDate(oneDay.getDate() + 1); 

Вы можете заменить его следующим образом:

var dateTime = '%asset_attribute_start_date%'; 
var date = dateTime.substring(0, dateTime.indexOf(" ")); 
var time = dateTime.substring(dateTime.indexOf(" ")+1); 

date = date.substring(date.indexOf("-")+1) + "-" + date.substring(0, date.indexOf("-")); 

var eventDate = new Date(date + ' ' + time); 
var oneDay = new Date(); 
oneDay.setDate(eventDate.getDate() + 1); 

var now = new Date(); 

Что она делает это заменить формат даты «2015-11-04» до ' 11-04-2015.

Смежные вопросы