提问者:小点点

在部分html中执行JavaScript以进行单页导航


我是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”来执行它。这显然是一个非常丑陋的解决方案。


共2个答案

匿名用户

我在搜索主题时没有找到这篇文章,但它出现在发布后的相关部分:加载带有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>