• Как принять значение переменной через import?

    @stremsky Автор вопроса
    Алексей Уколов, ок, попробую описать. Вот сайт: сайт.
    Там две страницы: index.html и gallery.html.

    На главной показывается рандомная картинка из массива картинок, где номер картинки это её номер в массиве.

    function randomNumber(arr) {
        var rand = Math.floor(Math.random() * arr.length);
        return rand;
      }
    
      let titleImage = $(".title__img");
    
      function randomImage() {
        titleImage.html(
          '<img src="assets/img/gallery/' +
            randomNumber(img_array) +
            '.jpg" alt="image">'
        );
      }

    Массив время от времени увеличивается, и я решил динамически получать длину массива на главной. Все картинки массива выводятся в gallery.html, там получаю длину массива, и загоняю в index.html.

    let arrLength = localStorage.getItem("arr");
      let img_array = [];
      img_array.length = arrLength;


    Поскольку в бэк я не умею, то решил попробовать обойтись средствами браузера.
    Думал что import/export мне помогут, но нет.

    Вот такая ситуация.
    Написано
  • Как принять значение переменной через import?

    @stremsky Автор вопроса
    Алексей Уколов,

    А вот теперь в силу вступает область видимости.
    Вы привели пример где взяли массив из index.html, и в него же вернули из переменной длину массива. То есть ваша область видимости - index.html.
    У меня же html-файлов два, и у каждого своя область видимости.
    Так вот. Достать внутри одного файла длину массива можно, а передать её в js-файл другой страницы не получается, вернее получается передать только переменную, но не значение, потому что из другого html-файла область видимости index.html недоступна.
    Я подкрутил ваш планкер до более точных исходных данных:
    https://plnkr.co/edit/wLZrpqDe7oUBm6Mg
    Написано
  • Как принять значение переменной через import?

    @stremsky Автор вопроса
    Алексей Уколов, действительно. Вы правы.
    Написано
  • Как принять значение переменной через import?

    @stremsky Автор вопроса
    Алексей Уколов, нет. Массив есть. И длина его есть. Если вы внимательно посмотрите на код в заголовке, то увидите, что в gallery.js длинна массива - 32.

    //gallery.js
    let arr = Array.from(document.querySelectorAll(".array>*"));
    export const arrLength = arr.length;
    console.log(arrLength); //32


    Передать длину массива наружу через экспорт не получится. Попробуйте сами свой код. Переменную вы увидите, а вместо 32 будет 0. Потому что в области видимости index.js исходного массива нет. Будь в arrLength функция - она бы передалась. А примитив - нет.
    Написано
  • Как принять значение переменной через import?

    @stremsky Автор вопроса
    Алексей Уколов, да, именно это я и имею в виду. Это означает что значение переменной видно только внутри gallery.js. А в другой файл его, значение, передать нельзя. Но можно записать в localStorage, и забрать оттуда.
    Написано
  • CSS свойство outline на андроиде работает как надо, а на айфоне - неправильно. Почему?

    @stremsky Автор вопроса
    Antonio Solo, так и есть. Сафари не поддерживает border-radius в свойстве outline. Спасибо!