<script> 标签在 html <head> 或外部 js 文件中不起作用
<script> tag not working in html <head> or external js file
试图在 HTML 文件中要求 js。通过下面看到的标签需要外部 js 文件
<script type="text/javascript" src="scripts/ui.js"></script>
<script type="text/javascript" src="scripts/events.js"></script>
这些脚本标签不起作用,因为其中的事件处理程序没有触发。所以,在之前的项目中,我很幸运地在 HTML 的标签中编写了所有 js 逻辑,看起来像这样(在这个项目中还有外部 js)此外,html 文件有"shuffle" 作为其 class 的按钮。
<script type="text/javascript">
$(".shuffle").click(function(){
console.log("hello");
let arr = onShuffle();
shuffleSuccess(arr);
});
</script>
有趣的是,我将上述函数放在 index.html/project 文件的控制台中,点击处理程序和 shuffleSuccess
函数一样工作,它位于外部js文件。谢谢!
我的建议是
1. 如果您使用 html5,例如 ,请改用以下内容:
<script src="scripts/ui.js"></script>
<script src="scripts/events.js"></script>
2. 像这样将脚本标签放在页面底部:
<!DOCTYPE html>
<html lang="en">
<head>
<!-- include jquery cdn link. internet connection is needed to work-->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
</head>
<body>
<div> <!-- just some elements -->
<div>Just some elements</div>
</div>
<!-- include the script tags here like this -->
<script src="scripts/ui.js"></script>
<script src="scripts/events.js"></script>
</body>
</html>
3. 检查您是否正确指定了 javascript 文件路径。
如果所有这些都没有解决您的问题,您可能需要 post 实际的 html 并描述 html 和 javascipt 的文件结构。我差点忘了问jquery是否确认有效,你把link加到jquery了吗?
还有一些事情
1. 请在尝试上述任何建议之前执行此操作:
注释掉所有 jquery 代码并编写 console.log("Hi");,检查它是否有效。如果它不起作用,则使用上面的脚本标签再试一次。如果这次没有成功,这意味着你错误地指定了 js 文件路径。
如果有效,则 jquery.
有问题
您的脚本需要在您的按钮位于 DOM 之后执行。您的选择是将它放在页面底部,就在结束正文标记之前,或者使用 document.ready,如下所示:
//This waits until all objects are loaded in the DOM
$(document).ready(function() {
//Then assigns the event handler
$(".shuffle").click(function(){
console.log("hello");
let arr = onShuffle();
shuffleSuccess(arr);
});
});
如果您的脚本在外部文件中,$(document).ready
是一个不错的选择。
或者,您可以使用http://api.jquery.com/on/。这会将点击处理程序应用于 body
中具有 class shuffle
的任何内容,即使它是稍后添加的。这可以说比 $(document).ready
更好
$("body").on("click", ".shuffle", function() {
console.log("hello");
/*let arr = onShuffle();
shuffleSuccess(arr);*/
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<button class="shuffle">Shuffle</button>
如果您想更改脚本顺序,可以使用类似以下的方法:
<html>
<head>
<title>Your Page</title>
<!-- Some CSS Links -->
</head>
<body>
<!-- Some Content -->
<input type="button" value="I'm a button">
<!-- Some more content -->
<!-- Note: the script comes after the button is placed -->
<script type="text/javascript">
$(".shuffle").click(function(){
console.log("hello");
let arr = onShuffle();
shuffleSuccess(arr);
});
</script>
</body>
</html>
试图在 HTML 文件中要求 js。通过下面看到的标签需要外部 js 文件
<script type="text/javascript" src="scripts/ui.js"></script>
<script type="text/javascript" src="scripts/events.js"></script>
这些脚本标签不起作用,因为其中的事件处理程序没有触发。所以,在之前的项目中,我很幸运地在 HTML 的标签中编写了所有 js 逻辑,看起来像这样(在这个项目中还有外部 js)此外,html 文件有"shuffle" 作为其 class 的按钮。
<script type="text/javascript">
$(".shuffle").click(function(){
console.log("hello");
let arr = onShuffle();
shuffleSuccess(arr);
});
</script>
有趣的是,我将上述函数放在 index.html/project 文件的控制台中,点击处理程序和 shuffleSuccess
函数一样工作,它位于外部js文件。谢谢!
我的建议是 1. 如果您使用 html5,例如 ,请改用以下内容:
<script src="scripts/ui.js"></script>
<script src="scripts/events.js"></script>
2. 像这样将脚本标签放在页面底部:
<!DOCTYPE html>
<html lang="en">
<head>
<!-- include jquery cdn link. internet connection is needed to work-->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
</head>
<body>
<div> <!-- just some elements -->
<div>Just some elements</div>
</div>
<!-- include the script tags here like this -->
<script src="scripts/ui.js"></script>
<script src="scripts/events.js"></script>
</body>
</html>
3. 检查您是否正确指定了 javascript 文件路径。 如果所有这些都没有解决您的问题,您可能需要 post 实际的 html 并描述 html 和 javascipt 的文件结构。我差点忘了问jquery是否确认有效,你把link加到jquery了吗?
还有一些事情
1. 请在尝试上述任何建议之前执行此操作:
注释掉所有 jquery 代码并编写 console.log("Hi");,检查它是否有效。如果它不起作用,则使用上面的脚本标签再试一次。如果这次没有成功,这意味着你错误地指定了 js 文件路径。
如果有效,则 jquery.
您的脚本需要在您的按钮位于 DOM 之后执行。您的选择是将它放在页面底部,就在结束正文标记之前,或者使用 document.ready,如下所示:
//This waits until all objects are loaded in the DOM
$(document).ready(function() {
//Then assigns the event handler
$(".shuffle").click(function(){
console.log("hello");
let arr = onShuffle();
shuffleSuccess(arr);
});
});
如果您的脚本在外部文件中,$(document).ready
是一个不错的选择。
或者,您可以使用http://api.jquery.com/on/。这会将点击处理程序应用于 body
中具有 class shuffle
的任何内容,即使它是稍后添加的。这可以说比 $(document).ready
$("body").on("click", ".shuffle", function() {
console.log("hello");
/*let arr = onShuffle();
shuffleSuccess(arr);*/
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<button class="shuffle">Shuffle</button>
如果您想更改脚本顺序,可以使用类似以下的方法:
<html>
<head>
<title>Your Page</title>
<!-- Some CSS Links -->
</head>
<body>
<!-- Some Content -->
<input type="button" value="I'm a button">
<!-- Some more content -->
<!-- Note: the script comes after the button is placed -->
<script type="text/javascript">
$(".shuffle").click(function(){
console.log("hello");
let arr = onShuffle();
shuffleSuccess(arr);
});
</script>
</body>
</html>