Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 加载窗口后获取HTMLCollection的第一个元素(Joomla)_Javascript_Joomla_Htmlcollection - Fatal编程技术网

Javascript 加载窗口后获取HTMLCollection的第一个元素(Joomla)

Javascript 加载窗口后获取HTMLCollection的第一个元素(Joomla),javascript,joomla,htmlcollection,Javascript,Joomla,Htmlcollection,我编写了一个joomla模块,正在尝试用一个小脚本访问一个HTMLCollection。 我通过添加脚本文件 $document->addScript('templates/design_control/js/mod_articles_newsbox.js'); 脚本本身如下所示: function openNews(id) { var list = document.getElementsByClassName("newsbox"); console.log(list)

我编写了一个joomla模块,正在尝试用一个小脚本访问一个HTMLCollection。 我通过添加脚本文件

$document->addScript('templates/design_control/js/mod_articles_newsbox.js');
脚本本身如下所示:

function openNews(id)
{
    var list = document.getElementsByClassName("newsbox");
    console.log(list);
    console.log("newsbox length: " + list.length);
    console.log(list[0]);
    ...
}

if(window.addEventListener){
    window.addEventListener("load", openNews(0), false);
} else {
    window.attachEvent("onload", openNews(0));
}
现在的问题是,我无法获取列表的第一个元素。当我记录列表本身时,一切似乎都很好,我得到一个包含1个元素的列表。但当我尝试记录第一个元素或列表的长度时,它是未定义的/0


我不知道,如果joomla有问题,我如何添加脚本,或者在元素准备好之前执行脚本(这会很奇怪,因为列表本身打印得很好)或者其他什么,我只知道我在这方面浪费了太多的时间,您知道如何解决这个问题吗?

在加载DOM时尝试使用不同的javascript事件:

if (window.addEventListener) {
  window.addEventListener('DOMContentLoaded', openNews(0));
} else {
  window.attachEvent('onload', openNews(0));
}

您将js代码放在何处?如果代码是包装的,那么它将给出未定义的,因为它将在加载dom之前执行。好的,是的,$document->addScript()函数将代码放在head标记中。。。我只是试着把它放在我的
    元素(“newsbox”)的正上方,但这会产生同样的错误。如何添加脚本?它应该在呈现DOM(DOM就绪)后执行,即使我将事件侦听器从load更改为DOMContentLoaded,当我尝试访问它时,列表仍然为空。当我打印列表时,它会显示元素,所以它应该在那里,DOM应该准备好了,不是吗?真奇怪。。。