2013-10-18 44 views
0

我看过类似的问题,但没有一个能满足我的需求。我需要根据列表获取按钮的禁用状态。 Here is my code:带变量的JavaScript getElementById

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

+1

'未捕获的ReferenceError:card_CURRENTCARD_buttonList未定义# –

+0

@PsychHalf你能告诉我该怎么办吗? – user2370460

+0

你想获得禁用按钮的ID? –

回答

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

谢谢,这个作品很棒! – user2370460

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

因为when is这个有效的javascript:'var card_buttonList = [] [];'? – jfriend00

+0

所以我不能使用我现有的数组呢? – user2370460

+0

@ jfriend00:对不起,修正了这个问题。 –

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; 

我认为这会奏效。