[英]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.