I am trying to assign an onclick function a certain type of item. So, within a for loop I have if(invType[i] != "empty")
then within that if statement I have
if(invType[i] == "usable"){
(function(num) {
document.getElementById(num).onclick = function(){useItem(invName[num],num)};
})(i);
}
only the last "usable"
object is getting the onclick function. Everyone keeps linking me to this question, but that doesn't help me. I have tried everything and I can't figure it out. Can someone please give me a better explanation for what all that means and how I can get my code to work?
Here's the whole code that adds all the buttons:
function backpack(update) {
i = 0;
if (update != 1) {
/*
tempA = document.getElementById("scene").innerHTML;
tempB = document.getElementById("textbox").innerHTML;
*/
}
/*
document.getElementById("textbox").innerHTML = '<br><br><input type="button" value="Close Backpack" onclick="closeBackpack()">';
document.getElementById("scene").innerHTML = '<div id="backpack" style="height:400px; width:400px; background-image:url(files/sugame/sprites/backpackBackground.png); border-style:solid; border-width:8px; position:absolute; top:92px; left:192px"></div>';
*/
for (i = 0; i < 9; i++) {
if (invType[i] != "empty") {
switch (i) {
case 0:
document.getElementById("backpack").innerHTML += '<input type="button" value="' + invName[i] + '" id="' + i + '" style="position:absolute; left:4px; top:4px;">';
break;
case 1:
document.getElementById("backpack").innerHTML += '<input type="button" value="' + invName[i] + '" id="' + i + '" style="position:absolute; left:136px; top:4px;">';
break;
case 2:
document.getElementById("backpack").innerHTML += '<input type="button" value="' + invName[i] + '" id="' + i + '" style="position:absolute; left:268px; top:4px;">';
break;
case 3:
document.getElementById("backpack").innerHTML += '<input type="button" value="' + invName[i] + '" id="' + i + '" style="position:absolute; left:4px; top:136px;">';
break;
case 4:
document.getElementById("backpack").innerHTML += '<input type="button" value="' + invName[i] + '" id="' + i + '" style="position:absolute; left:136px; top:136px;">';
break;
case 5:
document.getElementById("backpack").innerHTML += '<input type="button" value="' + invName[i] + '" id="' + i + '" style="position:absolute; left:268px; top:136px;">';
break;
case 6:
document.getElementById("backpack").innerHTML += '<input type="button" value="' + invName[i] + '" id="' + i + '" style="position:absolute; left:4px; top:268px;">';
break;
case 7:
document.getElementById("backpack").innerHTML += '<input type="button" value="' + invName[i] + '" id="' + i + '" style="position:absolute; left:136px; top:268px;">';
break;
case 8:
document.getElementById("backpack").innerHTML += '<input type="button" value="' + invName[i] + '" id="' + i + '" style="position:absolute; left:268px; top:268px;">';
break;
}
if (invType[i] == "usable") {
(function (num) {
document.getElementById(num).onclick = function () {
useItem(invName[num], num)
};
})(i);
}
if (invType[i] == "equipment") {
document.getElementById(i).onclick = function (i) {
return function () {
equipItem(invName[i], i)
};
}(i);
}
}
}
}