javascript - 内部 js 工作正常,但外部没有

标签 javascript jquery html css

JS 片段

相同的代码在 <script> 内部运行标记如果在外部 js 中维护相同的代码不起作用
var modal = document.getElementById('myModal');
var img = document.getElementById('home2');
var modalImg = document.getElementById("img01");
var captionText = document.getElementById("caption");
img.onclick = function() {
    modal.style.display = "block";
    modalImg.src = this.src;
    captionText.innerHTML = this.alt;
}
var span = document.getElementsByClassName("close")[0];
span.onclick = function() {
    modal.style.display = "none";
}

最佳答案

存在差异的原因是,在外部文件中,您的代码在浏览器完全解析 DOM 之前执行,因此您试图以编程方式访问浏览器尚不知道的页面元素。这正是大多数人已经说过的,但让我详细说明一下。所以你的 javascript 在页面上有元素之前执行。您可以通过使用 $(document).ready(function(){...}); 或将外部 javascript 文件移至底部来解决此问题。

关于javascript - 内部 js 工作正常,但外部没有,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46520318/

相关文章:

javascript - Jquery 在提交时验证多个输入

javascript - jquery错误$不是函数

javascript - 我如何创建一个 weka 类型的接口(interface)

javascript - 将表的特定 TD 元素转换为使用预填充选项进行选择

html - 如何将 Internet Explorer 中的数据 URI 用作 URL?

javascript - 获取复选框的选中值并将其发送到 servlet

javascript - 初始化自定义类

javascript - 无限平铺网页

jquery - 如果默认关闭,jQuery ui 选项卡中的内容是否会被编入索引?

javascript - 从闭包函数中调用方法