如何使用Java脚本更改占位符内容?

我有一个包含多个.html页面的网站,为了便于编辑,我在每个页面上使用了两个占位符:一个带有导航栏,另一个带有内容的主要框架,如下所示:

    <body>
      <div id="nav-placeholder">
      </div>
      <div id="content-placeholder">
      </div>
    </body>

导航栏和内容都在单独的文件中,并使用如下所示的外部Java脚本文件加载到页面中:

$(function(){
  $("#nav-placeholder").load("nav.html");
});

$(function(){
  $("#content-placeholder").load("content.html");
});

到目前为止,一切都运行得很好.现在,我正在try 分别更改每个页面的内容(使用JS),但我不确定如何做到这一点,或者这是否可能? 例如,content.html的一部分是`

<h2 id="subheader1">Title</h2>

我正在try 更改javascript文件中的#subheader1个内容,如下所示:

$(function(){
  $("#nav-placeholder").load("nav.html");
});

$(function(){
  $("#content-placeholder").load("content.html");
});

$(document).ready(function() {
  document.getElementById("subheader1").outerHTML = "test" ;
});

但这并不起作用(这是针对所有页面的,但仍然不起作用).可能是因为它只在index.html中看到占位符DIV,而不是它的内容?

我try 将subheader1div放在index.html中进行测试,然后它确实起作用了,但这会降低占位符的效率.

有什么方法可以做到这一点(或者用另一种方法来更有效地处理具有相同(DIV)布局但不同文本的页面?)

谢谢!

推荐答案

load方法不是同步的,因此

$(document).ready(function() {
  document.getElementById("subheader1").outerHTML = "test" ;
});

在将html加载到页面之前执行.

doc人建议使用回调函数.

它在后处理和执行了HTML插入之后执行

我在我的js文件中成功地使用了以下代码:

$(document).ready(function() {
    $(function(){
        $("#nav-placeholder").load("./nav.html", function() {
            document.getElementById("insideNav").outerHTML = "It works !" ;
        });
    });
});

我的nav.html里有<h2 id="insideNav">Original Nav Bar</h2>个.

Javascript相关问答推荐

在类型脚本中使用浏览器特定属性的正确方法是什么?

在卡信息之间切换

如何在加载的元数据上使用juserc和await中获得同步负载?

为什么在获取回调内设置状态(不会)会导致无限循环?

在JavaScript中,是否有一种方法可以创建自定义thable,在等待某些代码后自动触发它?

React:未调用useState变量在调试器的事件处理程序中不可用

从PWA中的内部存储读取文件

在Angular中将样式应用于innerHTML

在vercel throws上部署带有gunjs的sveltekit应用无法找到模块./' lib/文本编码'

使用i18next在React中不重新加载翻译动态数据的问题

手机上的渲染错误文本必须在文本组件中渲染,但在浏览器上没有问题<><>

为什么Mutations 观察器用微任务队列而不是macrotask队列处理?

制作钢琴模拟器,并且在控制台中不会执行或显示该脚本

如何迭代叔父元素的子HTML元素

使用Google API无法进行Web抓取

DOM不自动更新,尽管运行倒计时TS,JS

如何组合Multer上传?

判断函数参数的类型

有没有办法更改Chart.js 3.x.x中主要刻度的字体?

使用CEPRESS截取时,cy.Wait()在等待5000ms的第一个路由请求时超时