如何从“document.getElementBytag()”创建的数组中调用元素?

时间:2011-04-16 18:36:25

标签: javascript arrays mootools getelementsbytagname

我正在尝试使用mootools框架为我的网站创建一个页面。我已经到处寻找我能想到的答案,为什么这不起作用,但是空洞。

我想从html填充几个具有不同数据类型的数组,然后通过索引号调用每个数组中的元素,动态链接和控制函数中的这些元素。我在mootools jsfiddle实用程序中测试下面的简单代码片段。尝试从数组“region”调用元素直接返回“undefined”并尝试返回元素的索引号返回空值“-1”。

我无法从这个数组中获取有用的数据。我可以想到三个可能的原因,但无法弄清楚如何识别这里真正发生的事情: 也许这个数组根本没有填充任何数据。 2.也许它正在填充,但我误解了“document.getElementBytag()”获得了什么类型的数据,因此,无法使用“document.writeln()”语句显示数据。 (或者我被迫盲目地创建我的所有阵列?) 3.问题可能是以这种方式创建的数组未编入索引。 (或者我可以做些什么来索引这个数组?)

HTML:
<div>Florida Virginia</div>
<div>California Nevada</div>
<div>Ohio Indiana</div>
<div>New York Massachussetts</div>
<div>Oregon Washington</div>

JS:
var region = $$('div');
document.writeln(region[2]);
document.writeln(region.indexOf('Ohio Indiana'));

感谢帮助js新手弄清楚这个阵列的内容发生了什么。

1 个答案:

答案 0 :(得分:2)

$$将返回DOM元素列表。如果您只对这些DOM节点的文本感兴趣,请先将该位提取出来。正如@Dimitar在评论中指出的那样,在get的对象上调用Elements将返回一个数组,可能是通过迭代集合中的每个元素并获得有问题的属性。

var region = $$('div').get('text');

console.log(region[2]);                      // Ohio Indiana
console.log(region.indexOf('Ohio Indiana')); // 2

同样使用console.log代替document.writelndocument.write,原因是调用此函数将清除整个文档并将其替换为传入的任何字符串。

查看example