0

元のコード:

var myContainer = document.getElementsByClassName("containerName");

for (var i=0; i<list.length; i++) {
    actionRequest(myContainer[i]);
}

function actionRequest(container) {
    $.getJSON(url, function(data) {
        var array = [];
        var object = {//create objects};
        array.push(object);
    }
    container.innerHTML = '';

    $.each(array, function(idx, value) {
        container.innerHTML += '....';
    }
}

これは問題なく機能します。ただし、クラス名ではなく「containerName」にIDを割り当てるとすぐに、次のようになります。

 var myContainer = document.getElementById("containerName");

console.logは、「コンテナが未定義です」というエラーメッセージをスローします。

なぜ?

4

1 に答える 1

0

getElementsByClassNameノードのリストをgetElementById返しますが、単一のノードを返します。したがって、それを使用する場合は、forループを削除して、結果を直接actionRequest呼び出すことができます。getElementById


醜いのですが、最初の要素が存在するかどうかを確認して、ループを実行する必要があるかどうかを判断できます。

if (typeof myContainer[i] === 'undefined') {
    actionRequest(myContainer);
}
else {
    for (var i=0; i<list.length; i++) {
        actionRequest(myContainer[i]);
    }
}
于 2013-02-05T01:23:49.657 に答える