我是JavaScript的新手,我正在尝试使用bootstrap构建单页导航博客。我有一个基本的index. html
,其中包含以下代码:
<Some bootstrap navbar on top that includes "home", "about", "contact">
<div id="content">
</div>
<script src="navigation.js"></script>
导航. js
文件有一个window.addEventListener(“hashchange”,导航),它只是监听hashchange并根据哈希设置content-div的innerHTML
。每个页面的实际内容都被分离成部分html文件,例如只有的
about.html
到目前为止,一切正常,但对于home. html
,我不仅有静态的超文本标记语言,我还想执行一个JavaScript来呈现所有的博客文章。基本上,我希望home.html
包括:
<div id="posts">
</div>
<script src="renderposts.js"></script>
其中renderpost. js
是一个脚本,它将posts-div的innerHTML
设置为包含我的所有博客文章。
但是这不起作用,renderpost. js
没有被执行。我是否以错误的方式思考这个问题,我应该如何处理这个问题?我管理的唯一解决方法是将代码包含在导航.js
文件中,并通过if语句检查当前位置.hash是否为“#home”来执行它。这显然是一个非常丑陋的解决方案。
我在搜索主题时没有找到这篇文章,但它出现在发布后的相关部分:加载带有javascript的部分html
基本上,从contentDiv. innerHTML=content;
更改为jQuerys$('div#content').html(content);
解决了这个问题。我仍然好奇这是否是处理主要问题的“正确”方式,或者我是否错误地处理了整个事情。
处理它的一种方法是从您的主页链接renderpost. js,然后在加载home.html的函数中,它可以执行javascript函数。类似的东西
<script src="navigation.js"></script>
<script src="renderposts.js"></script>
<button onclick="loadHome">Click Me</button>
<script>
function loadHome() {
// Some AJAX Requst Here //
var contentDiv = document.getElementById("content");
contentDiv.innerHTML = content;
getPosts();
renderPosts();
}
</script>