J'ai une fonction principale d'où j'appelle d'autres fonctions qui sont présentes dans mon projet. Dans une fonction getNumberOfShelves, j'obtiens avec succès les valeurs numberOfBooks et numberOfShelves (le journal de la console fonctionne). Mais quand j'essaye d'appeler la fonction suivante

createManyShelves(arr, numberOfBooks, numberOfShelves)

Avec ces valeurs, j'obtiens « non défini ». Comment pourrais-je le réparer?

var numberOfBooks;
var numberOfShelves;
var widthOfOneImage = 100;
var arr = ['1.jpg', '2.jpg', '3.jpg', '4.jpg', '5.jpg']

window.addEventListener("resize", function() {
  mainFunc()
});

function mainFunc() {
  getNumberOfShelves(arr, document.querySelector('.axis').clientWidth, widthOfOneImage);
  createManyShelves(arr, numberOfBooks, numberOfShelves)
}

function getNumberOfShelves(arra, width, imageWidth) {
  var numberOfBooks = (Math.floor(width / widthOfOneImage));
  var numberOfShelves = Math.ceil(arra.length / numberOfBooks);
  console.log(numberOfBooks, numberOfShelves); //work
  return numberOfBooks, numberOfShelves;
}

function createManyShelves(arra, books, shelves) {
  console.log(books, shelves); //doesn't work
}
-2
brad_fresh 8 févr. 2020 à 21:13

1 réponse

Meilleure réponse

Modifiez l'instruction return pour transmettre les deux valeurs encapsulées dans l'objet.

function getNumberOfShelves(arra, width, imageWidth) {
  var numberOfBooks = (Math.floor(width / widthOfOneImage));
  var numberOfShelves = Math.ceil(arra.length / numberOfBooks);
  console.log(numberOfBooks, numberOfShelves); //work
  return { numberOfBooks, numberOfShelves };
}

Modifiez mainFunc pour capturer les valeurs de retour, afin que vous puissiez passer à createManyShelves.

function mainFunc() {
  const {numberOfBooks, numberOfShelves} = getNumberOfShelves(arr, document.querySelector('.axis').clientWidth, widthOfOneImage);
  createManyShelves(arr, numberOfBooks, numberOfShelves)
}

De plus, vous n'avez pas besoin des variables globales

var numberOfBooks;
var numberOfShelves;

J'espère que cela t'aides.

1
Siva K V 8 févr. 2020 à 18:31