我正在尝试执行访问页面中元素的代码。
我的 HTML 代码如下所示:
<!DOCTYPE html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/handlebars.js/4.0.6/handlebars.min.js"></script>
<script type="text/javascript" src="app.js"></script>
</head>
<body>
<div id="container">
<input type="text" id="user" />
<input type="button" id="add" value="add"/>
<ul id="peopleList">
</ul>
<script type="text/x-handlebars-template" id="template">
{{#each people}}
<li>{{.}}</li>
{{/each}}
</script>
</div>
</body>
我的 JavaScript 代码如下所示:
(function(){
var people = {
people: ["first", "second"],
init: function(){
this.cacheDOM();
this.render();
},
cacheDOM: function(){
this.$dm = $("#container");
this.$userField = this.$dm.find('#user');
this.$submitButton = this.$dm.find('#add');
this.template = this.$dm.find("#template").html();
this.$peopleList = this.$dm.find("#peopleList");
},
render: function(){
var compiled = Handlebars.compile(this.template);
this.$peopleList.html(compiled(this.people));
},
};
people.init();
})();
在执行过程中,我似乎无法访问 DOM 元素,因为它们是未定义的,尽管我从本教程中获取了以下代码:https://www.youtube.com/watch?v=m-NYyst_tiY&list=PLoYCgNOIyGABs-wDaaxChu82q_xQgUb4f&index=2
在视频中,他没有使用 $(document).ready,但他仍然能够立即访问 DOM 元素,为什么我有不同的行为?
因为视频中的人将他的 javascript 文件放置在 DOM 的更下方,即 html 元素之后。这样,当 javascript 执行时,DOM 就已经加载了。
我是一名优秀的程序员,十分优秀!