【发布时间】:2019-11-02 22:34:39
【问题描述】:
当我使用内联 javascript 代码时,一切正常。一旦我尝试从我的 script.js 运行代码,它就不再工作了。
我已经在 google 中搜索过这个问题,但它总是最终需要做一些事情来做 DOM 和 onload 或类似的事情(对不起,我对整个 html/css/js 的事情都是新手)。但这并没有帮助,我已经在使用 defer 并尝试了 onLoad。
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="https://unpkg.com/tippy.js@5/dist/backdrop.css">
<link rel="stylesheet" href="style.css">
<script defer src="https://unpkg.com/popper.js@1"></script>
<script defer src="https://unpkg.com/tippy.js@5"></script>
<script defer src="script.js"></script>
</head>
<body>
<div class="container">
<button id="myButton" class="button" title="button">My Button</button>
<div class="columns svg">
<div class="column is-one-third">
<div class="box">
<object type="image/svg+xml" data="SVG/Abbildung1.svg"></object>
</div>
</div>
</div>
</body>
</html>
/* SVG */
document.getElementById('ebk').addEventListener('mouseover', function(){
this.style.fill = "red";
});
document.getElementById('ebk').addEventListener('mouseout', function(){
this.style.fill = "black";
});
tippy('#myButton', {
content: "I'm a Tippy tooltip!",
});
我收到以下错误:
未捕获的引用错误:未定义tippy
^这是我的问题
未捕获的类型错误:无法读取 null 的属性“addEventListener”
^ 这很烦人,但我的页面仍然可以正常工作。是因为 SVG 加载速度不够快还是类似的原因?
编辑:
Tippy 现在可以工作了,我创建了另一个外部 .js 文件并将 SVG 和 tippy 的代码分开,现在它可以工作了。看起来问题是我得到了
<script type="text/javascript" href="../script.js"></script>
在我的 SVG 文件中。我真的不知道为什么,因为我是新手。
虽然“addEventListener”错误仍未消失。
【问题讨论】:
-
您的代码运行得太早了。将您的 JS 文件放在文档的末尾,在结束 body 标记之前或将其包装在 window.load 函数中
-
我都试过了,没用。
-
document.getElementById('ebk')中 ID 为ebk的元素在哪里? -
它在一个 SVG 文件中,它是一个
-
因为您的脚本在
document.getElementById('ebk')行失败,所以tippy('#myButton'不可能运行 - 假设您显示的代码是script.js- 所以,你不可能同时获得两者错误
标签: javascript html