Переменная перешла в функцию не работает JavaScript - PullRequest
0 голосов
/ 08 октября 2018

Я пытаюсь создать две функции, которые позволят мне прокручивать массив источников изображений и отображать их в моем представлении изображений: nextImage () и previousImage ().Они работают, если я использую исходную переменную num, но если я пытаюсь сделать ее более общей, чтобы я мог повторно использовать их в своем коде, и я передаю переменную num в качестве параметра в моем окне. Загрузка не работает, она просто достигает числа1 и не идет назад.Пожалуйста, посмотрите на код.Заранее спасибо, Алессандро

var num = 0;

var imagesArray1 = ["img/campionatigiovanili2018/img1.jpg", "img/campionatigiovanili2018/img2.jpg", "img/campionatigiovanili2018/img3.jpg"];

window.onload = function(){
  let logo = document.getElementById('logo');
  logo.addEventListener("click", function(){
    window.location.href = "index.html";
  });



  document.getElementById('postImage1').setAttribute("src", imagesArray1[num]);


  //previous image
  document.getElementById('previousImage').addEventListener("click", function(){
    previousImage("postImage1", imagesArray1, num)
});

document.getElementById('nextImage').addEventListener("click", function(){
  nextImage("postImage1", imagesArray1, num);
});

};

function nextImage(postImage, imageArray, myVar){
  if (myVar < 2) {
    myVar = myVar+1
    document.getElementById(postImage).setAttribute("src", imageArray[myVar]);
    console.log(myVar);
  } else {
  }
};

function previousImage(postImage, imageArray, myVar){
  if (myVar > 0) {
    myVar = myVar-1
    document.getElementById(postImage).setAttribute("src", imageArray[myVar]);
    console.log(myVar);
  } else {
  };
}

Ответы [ 2 ]

0 голосов
/ 08 октября 2018

Javascript всегда передает параметры по значению, если они примитивны (например, ваша num переменная)

Решение:

  • Просто напрямую отредактируйте numвнутри обработчика событий, поскольку это глобальная переменная.

  • Объявить его как объект: var currentObj = { num:0};

0 голосов
/ 08 октября 2018

Пожалуйста, используйте переменную num внутри функции и не передавайте ее в качестве параметра:

function nextImage(postImage, imageArray){
  if (num < 2) {
    num = num +1
    document.getElementById(postImage).setAttribute("src", imageArray[num]);
    console.log(num);
  } else {
  }
};

Как myVar и num в этом случае две разные переменные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...