Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.06.2014, 22:35
Аватар для Perkovec
Новичок на форуме
Отправить личное сообщение для Perkovec Посмотреть профиль Найти все сообщения от Perkovec
 
Регистрация: 24.11.2013
Сообщений: 7

Не находит элемент массива.
Есть вот такой скрипт
var date=new Date();
      var dd=date.getDate();
      var mm=date.getMonth();
      mm+=1;
      if (mm<10){
      mm = "0"+mm;}
      if (dd<10){
      dd = "0"+dd;}
      for (;;){
        full=''+dd+mm+(Math.floor(Math.random()*8)+1);
        if (events[full] === undefined) {
          continue
        }else{
          break};
      }
document.getElementById('foreventpopup').innerHTML='<div class="back-dialog" id="events"><div class="dialog-content" style="margin-top: 1%"><div class="dialog-title"><span>События сегодня</span><a class="close-dialog" href="javascript: closeevent()"></a></div>'+events[full]+'</div></div>';

Суть его в том, что он определяет сегодняшнюю дату в формате ддмм+число от 1 до 9 и выводит текст из элемента массива номер которого равен дате с числом от 1 до 9. Был май, всё работало отлично, но когда наступил Июнь всё прекратило работать.
Пример отрывка массива:
events[28051]='Новость';
events[29051]='Новость';
events[30051]='Новость';
events[31051]='Новость';
events[01061]='Новость';
events[02061]='Новость';
events[03061]='Новость';
events[04061]='Новость';
Ответить с цитированием
  #2 (permalink)  
Старый 07.06.2014, 03:37
Профессор
Отправить личное сообщение для depp Посмотреть профиль Найти все сообщения от depp
 
Регистрация: 22.04.2014
Сообщений: 151

позволил себе немного изменить ваш алгоритм поиска full
var date = ('0'+(new Date().getDate())).slice(-2)+
           ('0'+(new Date().getMonth()+1)).slice(-2),
    full = 0;

while(!events[full]){
    full = date + (Math.floor(Math.random()*9)+1);
}

while кстати придумали как раз для вашего типа цикла. for не нужен.
и мне почему то кажется что events должен быть с кавычками:
events['07061']='Новость';

Последний раз редактировалось depp, 07.06.2014 в 05:00.
Ответить с цитированием
  #3 (permalink)  
Старый 07.06.2014, 07:14
Аватар для Perkovec
Новичок на форуме
Отправить личное сообщение для Perkovec Посмотреть профиль Найти все сообщения от Perkovec
 
Регистрация: 24.11.2013
Сообщений: 7

Сообщение от depp Посмотреть сообщение
позволил себе немного изменить ваш алгоритм поиска full
var date = ('0'+(new Date().getDate())).slice(-2)+
           ('0'+(new Date().getMonth()+1)).slice(-2),
    full = 0;

while(!events[full]){
    full = date + (Math.floor(Math.random()*9)+1);
}

while кстати придумали как раз для вашего типа цикла. for не нужен.
и мне почему то кажется что events должен быть с кавычками:
events['07061']='Новость';
Я ещё скрипт ваш не проверял, но хочу поинтересоваться. Зачем здесь slice(-2)?
Ответить с цитированием
  #4 (permalink)  
Старый 09.06.2014, 03:36
Профессор
Отправить личное сообщение для depp Посмотреть профиль Найти все сообщения от depp
 
Регистрация: 22.04.2014
Сообщений: 151

сперва добавляется ноль к числу, полученному getDate или getMonth, типа 1 -> 01, 10 -> 010. но так как нам нужно всегда двузначное число, то slice обрезает число, начиная со второй позиции от конца. (0|10 -> 10)
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как выбрать элемент массива Dimaz jQuery 1 25.11.2012 19:33
Удалить элемент из массива, не убирая с экрана KamalovRadik Javascript под браузер 0 15.10.2011 12:48
Помогите удалить элемент двумерного массива Dorsaj Общие вопросы Javascript 5 18.10.2010 18:49
Проблема с IE - находит по шаблону только первый элемент tim-ua jQuery 3 17.07.2010 18:36
Как удалить элемент массива? velo Общие вопросы Javascript 2 05.02.2010 15:58