@peterBOG

Как правильно указать оператор?

function lalka() {
// Получаем массив элементов
var stickerArray = Array.from( document.querySelectorAll('.sticker') );

// Если хотя бы один элемент есть в массиве
if ( stickerArray.length ) {

// Проходим циклам по всем элементам, делаем, что нам нужно
  stickerArray.forEach( function (sticker) {
      var stickerTitle = sticker.getAttribute('title');
      var arr = stickerTitle.split('\n').filter(str=>{return str.length > 0})
      var n = arr.find(bbb => -1 != bbb.indexOf('Katowice 2014'))
// Пробовал указывать разные условия для if, код не работает
if ( n.length > 0 ) {
		  if (Notification.permission !== "granted")
    Notification.requestPermission();
  else {
    var notification = new Notification('Notification title', {
      icon: 'http://cdn.sstatic.net/stackexchange/img/logos/so/so-icon.png',
      body: "EZ KATOWICA 2014",
    });
      window.open("https://opskins.com/?loc=shop_browse&app=730_2");    
  }
	  }
  });
  // Проходим циклам по всем элементам, делаем, что нам нужно
  stickerArray.forEach( function (sticker) {
      var stickerTitle = sticker.getAttribute('title');
      var arr = stickerTitle.split('\n').filter(str=>{return str.length > 0})
      var nnn = arr.find(bbb => -1 != bbb.indexOf('Crown (Foil)'))
        if ( n.length ) {if (Notification.permission !== "granted")
    Notification.requestPermission();
  else {
    var notification = new Notification('Notification title', {
      icon: 'http://cdn.sstatic.net/stackexchange/img/logos/so/so-icon.png',
      body: "EZ KATOWICA 2014",
    });
 window.open("https://opskins.com/?loc=shop_browse&app=730_2");      
    }		
  });
}
}
setInterval(lalka, 5000);

Если вместо if ( n.length > 0 ) { я вывожу переменную n в консоль, то все работает, я получаю текст.
Так же условие if выполняется если выполнять отдельным скриптом. То есть проблема в том что я не правильно указываю условие этого оператора
  • Вопрос задан
  • 155 просмотров
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Метод find() возвращает значение первого найденного в массиве элемента, которое удовлетворяет условию, переданному в callback функции, либо undefined, если такого элемента не найдено.
Затем вы пытаетесь получить length от undefined, что приводит к ошибке.

Замените проверку на n !== 'undefined' или используйте findIndex(), который возвращает индекс найденного элемента или -1, если ничего не найдено.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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