在页面加载Javascript之前无法添加到DOM内容

时间:2014-10-10 19:33:47

标签: javascript jquery parse-platform

我目前正在尝试从查询解析后使用javscript将一堆元素添加到列表中。

如果我不添加任何点击监听器,我可以获得完整列表,但是如果我添加点击监听器,则只有前5个项目出现在列表中。

以下是我的javascript文件中的代码,它首先在html中调用:

if (!Parse.User.current()){
    window.location.href = 'index.html';
}
else {
    getParticipants();
}

$( document ).ready(function() {


$('#sign-out').click(function(){
    Parse.User.logOut();
    window.location.href = 'index.html';
    });

});

function getParticipants (){
var Participants = Parse.Object.extend("Participants");
var query = new Parse.Query(Participants);
query.ascending("patientID");
query.find({
    success: function(results) {
        for (var i = 0; i < results.length; i++) {
            var object = results[i];
            var id = object.get("patientID");
            $(".list-group").append("<li class='list-group-item' id='" + id + "'>" + id + "</li>");
            (function (id) {
                $('#' + object.get("patientID")).click(function (e) {
                    e.preventDefault();

                    if (typeof(Storage) !== "undefined") {
                        localStorage.setItem("patientID", id);
                    } else {
                        // Sorry! No Web Storage support..
                    }

                    window.location = 'profile.html';
                });
            }(id));
        }
    },
    error: function(error) {
        alert("Error: " + error.code + " " + error.message);
    }
});

}

1 个答案:

答案 0 :(得分:0)

您永远不能在页面加载之前修改DOM,因为此时DOM还没有准备好。

任何DOM操作都应该在触发onload事件后完成。