You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

首个JS脚本正常运行,第二个脚本无法读取文件的技术问题

多JS文件加载失效问题解决

问题描述

尝试在页面中引入多个JS文件,但第二个脚本(test.js)始终无法正常工作,调整<script>标签位置或修改ID都无法解决。

相关代码

HTML代码

<div id="buttoncontainer" class="buttoncontainer">

<script src="js/menu.js"></script>
<script src="js/test.js"></script>

<div class="rightmenu">
        <div id="test" style="height:400px;width:100px;outline:solid red 1px;">
    </div>
</div>

menu.js代码

let headerContent = `
  <a href="index.html">
    <img src="images/buttons/homebutton.gif" class="button"></a>

  <a href="blog/blogmain.html">
    <img src="images/buttons/blogbutton.gif" class="button"></a>

  <a href="art/artmain.html">
    <img src="images/buttons/artbutton.gif" class="button"></a>

<div class="dropmenu1">
  <a href="art/fanartmain.html">
    <img src="images/buttons/fanartbutton.gif" class="button"></a>

    <div class="dropmenu1-content">
    <a href="links/links.html">
    <img src="images/buttons/linksbutton.gif" class="button dropbutton"></a>
    </div>
    </div>

<div class="dropmenu2">
  <a href="art/donate.html">
    <img src="images/buttons/donatebutton.gif" class="button"></a>

    <div class="dropmenu2-content">
    <a href="comissions/comissions.html">
    <img src="images/buttons/comissionsbutton.gif" class="button dropbutton"></a>
    </div>
    </div>

  <a href="guestbook/guestbook.html">
    <img src="images/buttons/guestbookbutton.gif" class="button"></a>

<div class="dropmenu3">
  <a href="art/about.html">
    <img src="images/buttons/aboutbutton.gif" class="button"></a>
    
    <div class="dropmenu3-content">
    <a href="https://junessai.github.io/Old-JuneSSai.net-Archive/" target="_blank">
    <img src="images/buttons/oldsitebutton.gif" class="button dropbutton"></a>

    <a href="changelog/changelog.html">
    <img src="images/buttons/changelogbutton.gif" class="button dropbutton"></a>
    </div>
    </div>
`;
document.querySelector('#buttoncontainer').insertAdjacentHTML('beforeend', headerContent);

test.js代码

let headerContent = `
 <img src="images/test.png">
`;
document.querySelector('#test').insertAdjacentHTML('beforeend', headerContent);

问题根源

浏览器同步解析执行脚本:当解析到<script>标签时,会立即下载并执行对应的JS代码,此时<div id="test">元素还未被浏览器解析生成,document.querySelector('#test')返回null,调用insertAdjacentHTML会直接报错,导致脚本失效。

解决方案

方案1:将脚本标签移至目标元素之后

把<script>标签放到#test元素的后面,确保执行脚本时目标元素已存在:

<div id="buttoncontainer" class="buttoncontainer">

<div class="rightmenu">
        <div id="test" style="height:400px;width:100px;outline:solid red 1px;">
    </div>
</div>

<script src="js/menu.js"></script>
<script src="js/test.js"></script>

方案2:监听DOM加载完成事件

在JS代码中包裹逻辑,等待整个DOM树构建完成后再执行:
修改test.js为:

document.addEventListener('DOMContentLoaded', function() {
  let headerContent = `
   <img src="images/test.png">
  `;
  document.querySelector('#test').insertAdjacentHTML('beforeend', headerContent);
});

同样也可以给menu.js加上这个监听,确保兼容性。

方案3:给

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 16:00:59