首页 > 解决方案 > JS中的onload函数和Document Ready函数创建冲突

问题描述

因此,我正在处理我网站的一部分,该部分内置了一个 TODO 列表,我不希望数据像在页面旁边加载的其他数据一样加载。我尝试在我的 HTML 中的 Body Tag 中加载 onload,我也尝试过,$(document).ready(function(){})但是它们似乎都不起作用,我的控制台也没有出现任何错误。但是该功能正在工作,因为它还链接到另一个功能,该功能在单击我不想继续发生的按钮时运行。我希望它是无缝的。有什么原因可能无法正常工作。

感谢您提前提供任何帮助。

我的 HTML 和 Javascript 代码:

function create() {
   unfinished_task_container = document.getElementById("main_container");
   unfinished_task_container.innerHTML = "";

   var user = firebase.auth().currentUser;
   var uid;
   if (user != null) {
    uid = user.uid;
  }

  task_array = [];
  firebase
    .database()
    .ref("/Users/" + uid + "/todo/")
    .once("value", (snapshot) => {
      snapshot.forEach((childSnapshot) => {
        var childKey = childSnapshot.key;
        var childData = childSnapshot.val();
        task_array.push(Object.values(childData));
      });
    for (var i = 0; i < task_array.length; i++) {
      task_key = task_array[i][0];
      task_title = task_array[i][1];

      //Data
      task_container = document.createElement("div");
      task_container.setAttribute("class", "task_container");
      task_container.setAttribute("data-key", task_key);

      task_data = document.createElement("div");
      task_data.setAttribute("id", "task_data");

      title = document.createElement("p");
      title.setAttribute("id", "task_title");
      title.setAttribute("contenteditable", false);
      title.innerHTML = task_title;

      //Tools
      task_tool = document.createElement("div");
      task_tool.setAttribute("id", "task_tool");

      task_done_button = document.createElement("button");
      task_done_button.setAttribute("id", "task_done_button");
      task_done_button.setAttribute(
        "onclick",
        "task_done(this.parentElement.parentElement, this.parentElement)"
      );
      task_done_button.setAttribute("onclick", "task_done()");
      fa_done = document.createElement("i");
      fa_done.setAttribute("class", "fa fa-check");

      unfinished_task_container.append(task_container);
      task_container.append(task_data);
      task_data.append(title);

      task_container.append(task_tool);
      task_tool.append(task_done_button);
      task_done_button.append(fa_done);
    }
  });
}
<body onload="create();">
<div class="dentistToDo">
  <p class="divlable">Your Personal To Do List</p>
  <input id="input_box" placeholder="What needs to be done?" />
  <button id="input_button" onclick="add_task()">Add Task</button>
  <div class="container" id="main_container">
    <!-- DIV for TODO List -->
  </div>
</div>

标签: javascripthtmljqueryfunctionfirebase-realtime-database

解决方案


推荐阅读