2016-11-25 38 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

是的,大概你是对的。但这不是解决方案。 –