在javascript中使用变量作为数组的索引

在javascript中使用变量作为数组的索引,javascript,indexing,Javascript,Indexing,这是我的密码: var span = getSpanWithClass("galleria-current"); var slideNumber = span.innerHTML var imageIDDivs = document.getElementsByClassName("slideshowImage"); var singleimageidDiv = imageIDDivs[slideNumber] 如果我使用它,sigleImageidDiv中没有任何内容。如果我像这样输入0或1:

这是我的密码:

var span = getSpanWithClass("galleria-current");
var slideNumber = span.innerHTML
var imageIDDivs = document.getElementsByClassName("slideshowImage");
var singleimageidDiv = imageIDDivs[slideNumber]
如果我使用它,
sigleImageidDiv
中没有任何内容。如果我像这样输入0或1:

var singleimageidDiv = imageIDDivs[1]
它很好用<在我的测试用例中,code>slideNumber是
1

我也试过这些:

var singleimageidDiv = imageIDDivs[Number(slideNumber)]

var singleimageidDiv = imageIDDivs[parseInt(slideNumber)]

使用变量作为数组索引的正确方法是什么?

使用基数解析为int

这是正确的做法:

imageIDDivs[parseInt(slideNumber, 10)];
如果它不起作用,那么你的问题就出在别的地方了


顺便说一句,索引也可以处理字符串。
用基数解析为int

这是正确的做法:

imageIDDivs[parseInt(slideNumber, 10)];
如果它不起作用,那么你的问题就出在别的地方了


顺便说一句,索引也可以处理字符串。
innerHTML
返回元素中的字符串,因此即使元素中有一个数字,它也会作为字符串返回,这就是为什么当您使用该变量作为数组索引时,不会得到结果的原因。
使用parseInt是一种可接受的解决方案,您也可以执行类似于
span.innerHTML*1
的操作,强制JS将字符串视为整数。

innerHTML
返回元素中的字符串,因此即使元素中有数字,它也会作为字符串返回,这就是为什么当您使用该变量作为数组的索引时,不会得到结果。

使用parseInt是一种可接受的解决方案,您也可以执行类似于
span.innerHTML*1
的操作,这将迫使JS将字符串视为整数。

我想,您的
getSpanWithClass
函数中有一个错误。

我想,您的
getSpanWithClass
函数中有一个错误。

如果您直接从源代码复制代码,则在大多数行的末尾缺少分号。在开始研究代码可能不起作用的其他原因之前,您应该先修复代码的语法;然而,使用它们绝对是一种很好的做法。下面是“我不是”注释:“我只在堆栈溢出时使用分号…”该范围的innerHTML是什么?这将是解决您问题的重要信息。@user1308743。那么它应该会起作用。如果您直接从源代码复制代码,则在大多数行的末尾缺少分号。在开始研究代码可能不起作用的其他原因之前,您应该先修复代码的语法;然而,使用它们绝对是一种很好的做法。下面是“我不是”注释:“我只在堆栈溢出时使用分号…”该范围的innerHTML是什么?这将是解决您问题的重要信息。@user1308743。那么它应该会起作用。数组索引与其他属性名一样是字符串。不需要数字。@Berji不知道!差不多,但不完全是。数组是对象,因此,如果使用字符串作为索引,实际上可以添加一个可以使用该字符串索引检索的属性。也就是说,
“1”
1
是一个数组的两个不同索引。它们是吗?似乎不同意,但可能我误解了你。@apsillers你的例子对我也很有用,但我读到的关于JS的所有内容都是相反的,我不知道该告诉你什么。数组索引是字符串,就像其他属性名一样。不需要数字。@Berji不知道!差不多,但不完全是。数组是对象,因此,如果使用字符串作为索引,实际上可以添加一个可以使用该字符串索引检索的属性。也就是说,
“1”
1
是一个数组的两个不同索引。它们是吗?似乎不同意,但可能我误解了你。@apsillers你的例子对我也很有用,但我读到的关于JS的所有内容都表明,我不知道该告诉你什么。我尝试了没有,10的parseInt,但它不起作用。使用,10,它工作得很好。谢谢大家!@用户1308743。你用哪个浏览器试过?10是默认的基数。你能在创建一个不起作用的演示吗?我尝试了在没有,10的情况下使用parseInt,但它不起作用。使用,10,它工作得很好。谢谢大家!@用户1308743。你用哪个浏览器试过?10是默认的基数。你能在创建一个不工作的演示吗?