簡體   English   中英

在函數中更新時,布爾值不更新其值

[英]Boolean not updating it's value when updated in a function

我創建了一個名為showMoreImages的函數,該函數接受state作為參數來檢查其是否為true,然后將其值與其他一些操作一起更改為false。 但是,當我嘗試它不會更新引用的布爾值。 下面的代碼段。

function showMoreImages(num, el, category, state){
  for (var i = 0; i < category.length; i++) {
    toggleClass('show-images', category[i]);
    toggleClass('hide-images', category[i]);
  }
    if(state) {
      updateState('shift-down', 'shift-up', image_one[num]);
      el.innerHTML='View Less';
      state=false;
    }else{
      updateState('shift-up', 'shift-down', image_one[num]);
      el.innerHTML='View More';
      state=true;
    }
}

調用函數的位置:

if (i==1) {
    var isPlacesClose=true;
    buttons[i].addEventListener('click', function(){
      showMoreImages(0, this, places, isPlacesClose);
    });
  }

  if (i==2) {
    var isPeopleClose=true;
    buttons[i].addEventListener('click', function(){
      showMoreImages(1, this, people, isPeopleClose);
    });
  }

  if (i==3) {
    var isEventsClose=true;
    buttons[i].addEventListener('click', function(){
      showMoreImages(2, this, events, isEventsClose);
    });
  }

我正在嘗試實現的是更新作為參數傳遞的布爾值。 例如,如果i = 1,我想將isPlacesClose更新為false,反之亦然。

提前致謝!

state是一個原始值,當它的值在showMoreImages更改時, 不會保留在showMoreImages范圍showMoreImages

傳回值

function showMoreImages(num, el, category, state){
  for (var i = 0; i < category.length; i++) {
    toggleClass('show-images', category[i]);
    toggleClass('hide-images', category[i]);
  }
    if(state) {
      updateState('shift-down', 'shift-up', image_one[num]);
      el.innerHTML='View Less';
      return false; //observe change in this line, value is returned instead of setting the same in state
    }else{
      updateState('shift-up', 'shift-down', image_one[num]);
      el.innerHTML='View More';
      return true; //observe change in this line, value is returned instead of setting the same in state
    }
}

現在,在參數中傳遞的變量中接收返回值

if (i==1) {
    var isPlacesClose=true;
    buttons[i].addEventListener('click', function(){
    //observe change in this line, isPlacesClose is updated with returned value 
      isPlacesClose = showMoreImages(0, this, places, isPlacesClose); 
    });
  }

  if (i==2) {
    var isPeopleClose=true;
    //observe change in this line, isPeopleClose is updated with returned value 
    buttons[i].addEventListener('click', function(){
      isPeopleClose = showMoreImages(1, this, people, isPeopleClose);
    });
  }

  if (i==3) {
    var isEventsClose=true;
    buttons[i].addEventListener('click', function(){
      isEventsClose = showMoreImages(2, this, events, isEventsClose);
    });
  }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM