【问题标题】:Javascript - Passing from a DOM element to array [closed]Javascript - 从DOM元素传递到数组[关闭]
【发布时间】:2014-09-25 21:05:03
【问题描述】:

您好,感谢您抽出宝贵时间。

代码如下:

<script>
var names = document.getElementsByClassName('xx');
var ar = [];
for (var i = 0, c = names.length ; i < c ; i++) {
ar[i] = names[i].innerHTML;
alert(ar[i]);// the results are : undefined
}
</script>`

我尝试过使用tostring的方法,或者将结果推送到数组中但没有成功。

谢谢

【问题讨论】:

  • 您可能在这段代码中遇到语法错误,或者是拼写错误?
  • 你缺少一个右花括号'}'
  • ar 的长度为 0i 等于 0。你的 for 循环不会迭代。
  • 而您使用的是 'ar' 的长度而不是名称。 ar的长度为0

标签: javascript dom innerhtml getelementsbyclassname


【解决方案1】:

您的主要问题似乎已解决。确保在尝试运行代码之前已加载 DOM,并且循环中不需要两个变量。简化如下:

window.onload = function () {
    var names = document.getElementsByClassName('xx');
    var ar = [];

    for (var i = 0 ; i < names.length ; i++) {
        ar[i] = names[i].innerHTML;
        alert(ar[i]);
    }
};

Fiddle

【讨论】:

  • 非常感谢,我缺少的是 window.onload 函数。
  • 不客气,很高兴我能帮上忙。如果这解决了您的问题,请接受答案:)
【解决方案2】:

ar.length 等于 0,因为你只是声明了数组,但没有往里面放任何东西。我认为您想要做的是:

var names = document.getElementsByClassName('xx');
var ar = [];
for (var i = 0 ; i < names.length ; i++) {
ar[i] = names[i].innerHTML;
alert(ar[i]);
}

【讨论】:

  • 是的,没错。当我这样做时,我得到一个到处都是未定义的数组。但是当我做 alert(names[i].innerHTML);有用。我不知道这很奇怪
  • 将脚本标签放在文档的末尾,而不是开头。所以放在
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-29
  • 2019-08-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多