Я видел подобные вопросы, но ни один из них, похоже, не удовлетворяет мою потребность. Мне нужно отключить кнопку на основе списка. Вот мой код:
<button id="obj1" disabled>OBJ1</button>
<button id="obj2">OBJ2</button>
<button id="obj4" disabled>OBJ4</button>
<button id="obj5" disabled>OBJ5</button>
<button id="obj7">OBJ7</button>
<button id="obj8">OBJ8</button>
<script>
card_1_buttonList = new Array();
card_1_buttonList[0] = "1";
card_1_buttonList[1] = "2";
card_1_buttonList[2] = "4";
card_2_buttonList = new Array();
card_2_buttonList[0] = "5";
card_2_buttonList[1] = "7";
card_2_buttonList[2] = "8";
var CURRENTCARD = 2;
var BUTTONCOUNTER = 1;
var buttonDisabled = document.getElementById('obj' + card_CURRENTCARD_buttonList[BUTTONCOUNTER]).disabled;
alert(buttonDisabled);
</script>
Как я могу это сделать без изменения существующих массивов?
Попробуй это:
card_1_buttonList = new Array();
card_1_buttonList[0] = "1";
card_1_buttonList[1] = "2";
card_1_buttonList[2] = "4";
card_2_buttonList = new Array();
card_2_buttonList[0] = "5";
card_2_buttonList[1] = "7";
card_2_buttonList[2] = "8";
var CURRENTCARD = 2;
var BUTTONCOUNTER = 2;
var buttonDisabled = document.getElementById('obj' + window['card_' + CURRENTCARD + '_buttonList'][BUTTONCOUNTER]).disabled;
alert(buttonDisabled);
Скрипт: http://jsfiddle.net/Seawd/
Также обратите внимание, что BUTTONCOUNTER - это индекс массива, поэтому 7 (как и у вас) не является допустимым значением для него. Вам нужно будет сделать дополнительную обработку, чтобы получить индекс, если вы хотите, чтобы счетчик был значением, а не индексом.
var CURRENTCARD = 2;
var BUTTONCOUNTER = 7;
var buttonDisabled = document.getElementById('obj' + card_CURRENTCARD_buttonList[BUTTONCOUNTER]).disabled;
alert(buttonDisabled);
Проблема заключается в третьей строке этого кода. ваше имя неверно. Сначала попробуйте создать имя массива.
var cardArr = "card_" + CURRENTCARD + "_buttonList" ; // this will give you array name. like card_1_buttonList
var buttonDisabled = document.getElementById('obj' + window[cardArr]BUTTONCOUNTER]).disabled;
Я думаю, это сработает.
Вы не можете этого сделать. Вместо этого вы можете создать двухмерный массив со следующей структурой
var card_buttonList = [];
card_buttonList[0] = new Array();
card_buttonList[0][0] = "1";
card_buttonList[0][1] = "2";
card_buttonList[0][2] = "4";
card_buttonList[1] = new Array();
card_buttonList[1][0] = "5";
card_buttonList[1][1] = "7";
card_buttonList[1][2] = "8";
С этой структурой вы сможете использовать индексы, подобные этому
var CURRENTCARD = 2;
var BUTTONCOUNTER = 7;
var buttonDisabled = document.getElementById('obj' +
card_buttonList[CURRENTCARD ][BUTTONCOUNTER]).disabled;
var card_buttonList = [][];
?
Uncaught ReferenceError: card_CURRENTCARD_buttonList is not defined