gpt4 book ai didi

javascript - 内联 js 有效,外部文件无效

转载 作者:行者123 更新时间:2023-12-02 22:38:11 25 4
gpt4 key购买 nike

当我使用内联 JavaScript 代码时,一切正常。一旦我尝试从 script.js 运行代码,它就不再起作用了。

我已经在谷歌中搜索过这个问题,它最终总是有一些东西可以做 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!",
});

我收到这些错误:

Uncaught ReferenceError :tippy 未定义

^这是我的问题

未捕获类型错误:无法读取 null 的属性“addEventListener”

^ 这很烦人,但我的页面仍然工作正常。是因为 SVG 加载速度不够快还是类似的原因?

编辑:

Tippy 现在可以工作了,我创建了另一个外部 .js 文件并将 SVG 和 Tippy 的代码分开,现在它可以工作了。看起来问题是我得到了

<script type="text/javascript" href="../script.js"></script>

在我的 SVG 文件中。我真的不知道为什么,因为我是新手。

尽管“addEventListener”错误仍然没有消失。

最佳答案

您必须在对象元素上注册 onload 事件,并在该事件触发时执行操作。

首先为对象元素定义一个id:

<!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 id="svg" type="image/svg+xml" data="SVG/Abbildung1.svg"></object>
</div>
</div>

</div>
</body>
</html>

然后在对象上注册onload事件:

var svg = document.getElementById('svg')
svg.onload = function () {
var svgDoc = svg.contentDocument; // Access to object document
/* SVG */
svgDoc.getElementById('ebk').addEventListener('mouseover', function(){
this.style.fill = "red";
});
svgDoc.getElementById('ebk').addEventListener('mouseout', function(){
this.style.fill = "black";
});
tippy('#myButton', {
content: "I'm a Tippy tooltip!",
});
}

请务必将脚本标记移动到 HTML 页面末尾。

关于javascript - 内联 js 有效,外部文件无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58675881/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com