0

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の問題であり、スクリプトを追加する方法または要素の準備が整う前にスクリプトが実行される方法(リスト自体が正常に印刷されるため、これは奇妙です)または他の何かであるかどうかはわかりません。これであまりにも多くの時間を無駄にしました^^それで、これを解決する方法の手がかりはありますか?

4

1 に答える 1

0

DOM のロード時に別の JavaScript イベントを使用してみてください。

if (window.addEventListener) {
  window.addEventListener('DOMContentLoaded', openNews(0));
} else {
  window.attachEvent('onload', openNews(0));
}
于 2015-05-08T18:24:20.057 に答える