@yagyar001

Не срабатывает условие, в чем ошибка?

Всем привет. Учу js. Не срабатывает условие тут:

for (let elem in horoscore) {
		if (elem[dateNow]) {
			for (let elems in elem[dateNow]) {
				p.innerHTML = elems[znak];
				document.body.appendChild(p);
				console.log(elems)
			}
		}
	}


let horoscore = {

	'2020-7-19' : {
		'Козерог' : 'Гороскоп на 19 июля (сегодня)',
		'Водолей' : 'Гороскоп на 19 июля (сегодня)',
		'Рыбы' : 'Гороскоп на 19 июля (сегодня)',
		'Овен' : 'Гороскоп на 19 июля (сегодня)',
		'Телец' : 'Гороскоп на 19 июля (сегодня)',
		'Близнецы' : 'Гороскоп на 19 июля (сегодня)',
		'Рак' : 'Гороскоп на 19 июля (сегодня)',
		'Лев' : 'Гороскоп на 19 июля (сегодня)',
		'Дева' : 'Гороскоп на 19 июля (сегодня)',
		'Весы' : 'Гороскоп на 19 июля (сегодня)',
		'Скорпион' : 'Гороскоп на 19 июля (сегодня)',
		'Стрелец' : 'Гороскоп на 19 июля (сегодня)'
	},
	'2020-7-20' : {
		'Козерог' : 'Гороскоп на 20 июля',
		'Водолей' : 'Гороскоп на 20 июля',
		'Рыбы' : 'Гороскоп на 20 июля',
		'Овен' : 'Гороскоп на 20 июля',
		'Телец' : 'Гороскоп на 20 июля',
		'Близнецы' : 'Гороскоп на 20 июля',
		'Рак' : 'Гороскоп на 20 июля',
		'Лев' : 'Гороскоп на 20 июля',
		'Дева' : 'Гороскоп на 20 июля',
		'Весы' : 'Гороскоп на 20 июля',
		'Скорпион' : 'Гороскоп на 20 июля',
		'Стрелец' : 'Гороскоп на 20 июля'
	},
	'2020-7-21' : {
		'Козерог' : 'Гороскоп на 21 июля',
		'Водолей' : 'Гороскоп на 21 июля',
		'Рыбы' : 'Гороскоп на 21 июля',
		'Овен' : 'Гороскоп на 21 июля',
		'Телец' : 'Гороскоп на 21 июля',
		'Близнецы' : 'Гороскоп на 21 июля',
		'Рак' : 'Гороскоп на 21 июля',
		'Лев' : 'Гороскоп на 21 июля',
		'Дева' : 'Гороскоп на 21 июля',
		'Весы' : 'Гороскоп на 21 июля',
		'Скорпион' : 'Гороскоп на 21 июля',
		'Стрелец' : 'Гороскоп на 21 июля'
	}
}

let date = new Date();

let monthCheck = date.getMonth();

if (monthCheck < 9 && monthCheck > 0) {
	+monthCheck++;
} 

if (monthCheck == 0) {
	monthCheck = 12;
}

let dateNow = String(date.getFullYear()) + '-' + monthCheck + '-' + date.getDate();

let month;
let day;
let znak;
let input = document.querySelector('#input');
let label = document.querySelector('#label');
input.addEventListener('blur', function(){

	let arr = input.value.split('-');
	month = parseInt(arr[1]);
	day = parseInt(arr[2]);

	switch (month) {
	    case 1:
	        if (day <= 19)
	            znak = 'Козерог';
	        else
	            znak = 'Водолей';
	        break;
	    case 2:
	        if (day <= 18)
	            znak = 'Водолей';
	        else
	            znak = 'Рыбы';
	        break;
	    case 3:
	        if (day <= 20)
	            znak = 'Рыбы';
	        else
	            znak = 'Овен';
	        break;
	    case 4:
	        if (day <= 19)
	            znak = 'Овен';
	        else
	            znak = 'Телец';
	        break;
	    case 5:
	        if (day <= 20)
	            znak = 'Телец';
	        else
	            znak = 'Близнецы';
	        break;
	    case 6:
	        if (day <= 21)
	            znak = 'Близнецы';
	        else
	            znak = 'Рак';
	        break;
	    case 7:
	        if (day <= 22)
	            znak = 'Рак';
	        else
	            znak = 'Лев';
	        break;
	    case 8:
	        if (day <= 22)
	            znak = 'Лев';
	        else
	            znak = 'Дева';
	        break;
	    case 9:
	        if (day <= 22)
	            znak = 'Дева';
	        else
	            znak = 'Весы';
	        break;
	    case 10:
	        if (day <= 22)
	            znak = 'Весы';
	        else
	            znak = 'Скорпион';
	        break;
	    case 11:
	        if (day <= 22)
	            znak = 'Скорпион';
	        else
	            znak = 'Стрелец';
	        break;
	    case 12:
	        if (day <= 21)
	            znak = 'Стрелец';
	        else
	            znak = 'Козерог';
	        break;
	}
	label.innerHTML = `Ваш знак зодиака ${znak}`;
	let p = document.createElement('p');
	for (let elem in horoscore) {
		if (elem[dateNow]) {
			for (let elems in elem[dateNow]) {
				p.innerHTML = elems[znak];
				document.body.appendChild(p);
				console.log(elems)
			}
		}
	}
})
  • Вопрос задан
  • 82 просмотра
Решения вопроса 2
@dimoff66
Кратко о себе: Я есть
Циклы бессмысленны.

Просто
const elem = horoscope[dateNow][znak]
const p = document.createElement('p');
p.innerHTML = elem
document.body.appendChild(p)


И все.
Ответ написан
Комментировать
E1ON
@E1ON Куратор тега JavaScript
Programming, Gamedev, VR
Непонятно, зачем итерировать обьект, нужно как в ответе выше.
Конкретно ваш пример, если нужно прям итерировать:
for (let elem in horoscore) {
    if (horoscore[dateNow]) {
      for (let elems in horoscore[dateNow]) {
        p.innerHTML = horoscore[dateNow][znak];
        document.body.appendChild(p);
        console.log(elems)
      }
    }
  }
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы