За последние 24 часа нас посетили 17468 программистов и 1715 роботов. Сейчас ищут 1697 программистов ...

Переменная if else внутри массива

Тема в разделе "JavaScript и AJAX", создана пользователем JonyFront, 3 авг 2021.

  1. JonyFront

    JonyFront Активный пользователь

    С нами с:
    5 июн 2016
    Сообщения:
    143
    Симпатии:
    1
    Добрый день, есть код:
    Код (Javascript):
    1. if(window.innerWidth < 992){
    2. ~( function( window )
    3. {
    4.   'use strict';
    5.  
    6.   var _default =
    7.   {
    8.     color      : '#229AC8',
    9.     product    : '.catalog__item',
    10.     pagination : '.pagination',
    11.     useRollback: true
    12.   };
    13. .......
    Мне нужно чтобы в product : '.catalog__item', , класс менялся в зависимости есть элемент на странице или нет, я пробую так:

    Код (Javascript):
    1. if($('.catalog__item').length > 0){
    2. var product_class = '.catalog__item';
    3. } else if ($('.catalog__item2').length > 0) (
    4. var product_class = '.catalog__item2';
    5. }
    и в массиве пишу переменную:

    Код (Javascript):
    1.  var _default =
    2.   {
    3.     color      : '#229AC8',
    4.     product    : product_clas,
    5.     pagination : '.pagination',
    6.     useRollback: true
    7.   };
    но не работает такой вариант, подскажите пожалуйста почему? как можно это пофиксить?
     
  2. yanuzay

    yanuzay Активный пользователь

    С нами с:
    28 мар 2018
    Сообщения:
    501
    Симпатии:
    58
    product_class и product_clas это в вопросе только опечатка ?

    Если в коде без опечаток, то попробуй вместо:
    if($('.catalog__item').length > 0){
    заменить на :
    if($('.catalog__item') !== null){
     
  3. JonyFront

    JonyFront Активный пользователь

    С нами с:
    5 июн 2016
    Сообщения:
    143
    Симпатии:
    1
    Проблема в другом, внутри ~( function( window ) не хочет работать jquery нормально, я переделал вот так:
    Код (Javascript):
    1. if(window.innerWidth < 992){
    2.   document.addEventListener('DOMContentLoaded', function(){
    3.   var product_item = '22', catalog_item = $('.catalog__item'), news_item = $('.news-block__item');
    4.   if(catalog_item.length){
    5.     product_item = '.catalog__item';
    6.   } else if (news_item.length) {
    7.     product_item = '.news-block__item';
    8.   }
    9. });
    10. ~( function( window )
    11. {
    12.   'use strict';
    13.  
    14. console.log(product_item); // = Uncaught ReferenceError: product_item is not defined
    15.   var _default =
    16.   {
    17.     color      : '#229AC8',
    18.     product    :  product_item,
    19.     pagination : '.pagination',
    20.     useRollback: true
    21.   };
    В итоге ДО ~( function( window ) product_item работает как нужно, а внутри функции не видит переменную, и так же если весь тот верхний код поместить внутри функции, тупик)) Подскажите пожалуйста, как переменную product_item с нужными данными передать в функцию ~( function( window ) ?

    На сколько будет правильным заменить
    Код (Javascript):
    1. ~( function( window )
    2. {
    3.   'use strict';
    НА
    Код (Javascript):
    1. document.addEventListener('DOMContentLoaded', function(){
    ?
     
    #3 JonyFront, 3 авг 2021
    Последнее редактирование: 3 авг 2021
  4. yanuzay

    yanuzay Активный пользователь

    С нами с:
    28 мар 2018
    Сообщения:
    501
    Симпатии:
    58
    Значение переменной product_item у вас присваивается после загрузки страницы.

    Код где используется переменная ,product_item выполняется до присвоения значения product_item:
    1. var _default =
    2. {
    3. color : '#229AC8',
    4. product : product_item,
    5. pagination : '.pagination',
    6. useRollback: true
    7. };