2016-11-25 79 views
0

我正在盯着我的旅程與JS所以pleace耐心:) 即時通訊構建一個小應用程序。左側的圖像存儲在數組中。如果有人點擊其中一個,我想更改它的高度,但也要將布爾值從false更改爲true,以便我知道用戶點擊了哪個(用於其他目的)。在我看來,它是這樣的:創建一個數組 - >將EventListener添加到item->鏈,它選擇函數(將值更改爲true) - >運行setClick函數來更改高度。那裏有什麼問題? 我aprecciate任何建議。 CODEPEN http://codepen.io/finewitch/pen/ZBKMKm更改存儲在數組中的對象的布爾值

var storage = new Array(); 
storage[0] = document.getElementById("grandFatherCh"); 
storage[1] = document.getElementById("grandMotherCh"); 
storage[2] = document.getElementById("sisterCh"); 
storage[3] = document.getElementById("brotherCh"); 
storage[4] = document.getElementById("fatherCh"); 
storage[5] = document.getElementById("motherCh"); 
storage[0].clicked = false; 
storage[1].clicked = false; 
storage[2].clicked = false; 
storage[3].clicked = false; 
storage[4].clicked = false; 
storage[5].clicked = false; 


for (var i=0; i<storage.length; i++){ 
    storage[i].addEventListener("click",choosen, setClick); 
    console.log("clicked"); 
}; 

function choosen(){ 
     if (storage[i].clicked == false) 
      { 
      return "stillFalse" 
      storage[i].clicked = true;   
    } 

}; 

function setClick(){ 
    if(storage[i].clicked === true){ 
    return "setClickWorks" 
    storage[i].style.height = "400px"; 
    }else{ 
    console.log('failed'); 
    } 

}; 
+0

你不能只爲那個元素添加一個屬性。 'storage [0] .clicked' - 我相信它是一個'HTMLElement'類型,我不認爲它有一個內置的'clicked'屬性。 –

+1

你想如何點擊JavaScript中的數組?嘗試在@PraveenKumar建議的HTML元素上綁定單擊事件處理程序。 –

+0

什麼是'setClick'?它也應該在'addEventListener'的第二個參數中爲'false' –

回答

0

也許我失去了一些東西,但我認爲你在錯誤的地方沒有return語句?應該是

function choosen(){ 
    if (storage[i].clicked == false) { 
     return "stillFalse" 
    } else { 
     storage[i].clicked = true;   
    } 
} 

function setClick(){ 
    if (storage[i].clicked === true){ 
     storage[i].style.height = "400px"; 
     return "setClickWorks" 
    } else { 
     console.log('failed'); 
    } 
} 
+0

是的,大概你是對的。但這不是解決方案。 –