JavaScript getElementById с переменными

0

Я видел подобные вопросы, но ни один из них, похоже, не удовлетворяет мою потребность. Мне нужно отключить кнопку на основе списка. Вот мой код:

<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>

Как я могу это сделать без изменения существующих массивов?

Пример jsFiddle

  • 1
    Uncaught ReferenceError: card_CURRENTCARD_buttonList is not defined
  • 0
    @PsychHalf Можете ли вы сказать мне, что я должен делать?
Показать ещё 4 комментария
Теги:
list
variables
getelementbyid

3 ответа

1
Лучший ответ

Попробуй это:

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 (как и у вас) не является допустимым значением для него. Вам нужно будет сделать дополнительную обработку, чтобы получить индекс, если вы хотите, чтобы счетчик был значением, а не индексом.

  • 0
    Спасибо, это прекрасно работает!
1
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;

Я думаю, это сработает.

1

Вы не можете этого сделать. Вместо этого вы можете создать двухмерный массив со следующей структурой

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;
  • 0
    С каких это пор это допустимый javascript: var card_buttonList = [][]; ?
  • 0
    Так я не могу сделать это, используя мои существующие массивы?
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню