[英]How to call a function in external script file from HTML
我试图在我的 HTML 索引文件中调用 javascript function ,但我无法让它工作。 这是我试图从中调用 function 的 html 文件。
<div class="main">
<h1 class="header-main" onload="HeaderTyper('Welcome', this)">
<noscript>no javascript</noscript>
</h1>
</div>
<script type="text/javascript" src="script.js"></script>
这就是脚本。
function HeaderTyper(message, element){
var i = 0;
var speed = 50;
if (i < message.length) {
element.innerHTML += message.charAt(i);
//play keystroke sound
i++;
setTimeout(HeaderTyper, speed);
}
}
我正在尝试获得打字机效果样式 header。 我打算添加一些击键声音,但首先我需要弄清楚如何在 header 标签中实际输入它。 代码不会输入我在参数中传递的message
。 我做错了什么? 感谢您的任何帮助。
您正在尝试在加载到浏览器之前绑定 function 调用。 从 HTML 中删除 onload 并向脚本添加事件侦听器。
根据此解决方案, The onload event can only be used on the document(body) itself
。 实现此目的的最佳方法是在</body>
结束标记之前的<script>
标记中调用 function:
<div class="main"> <h1 class="header-main"> <noscript>no javascript</noscript> </h1> </div> <script> function HeaderTyper(message) { var i = 0; var speed = 50; var element = document.querySelector('.header-main'); if (i < message.length) { element.innerHTML += message.charAt(i); //play keystroke sound i++; setTimeout(HeaderTyper, speed); } } HeaderTyper('Welcome'); </script>
在 HTML 页面结束后(正如@johannchopin 解释的那样),导入文件,然后添加一个事件侦听器(正如@aaronburrows 解释的那样)。
<body>
<div class="main">
<h1 class="header-main">
<noscript>no javascript</noscript>
</h1>
</div>
</body>
</html>
<script type="text/javascript" src="script.js"></script>
<script>
let h1 = document.querySelector('.header-main');
h1.addEventListener('load', HeaderTyper("Welcome", h1, false));
</script>
另外,我修复了 function,它缺少参数。
function HeaderTyper(message, element, i) {
var speed = 50;
if (i < message.length) {
console.log(message.charAt(i))
element.innerHTML += message.charAt(i);
//play keystroke sound
setTimeout(function(){ HeaderTyper(message,element,++i)}, speed);
}
}
好的,你好。
function HeaderTyper(message, element){
alert('script loaded') //<---
var i = 0;
我将此行放在脚本的开头以确保它有效。 事实并非如此。 为什么? 因为您刚刚制作了 function 但没有调用它。
解决此问题的第一种方法 - 将您的 function 放入 HTML 文档的“脚本”中。 然后调用它,比如
<script>
function HeaderTyper(message) {
let i = 0
let speed = 50
let element = document.querySelector('.header-main')
if (i < message.length) {
element.innerHTML += message.charAt(i)
i += 1
setTimeout(HeaderTyper, speed)
}
}
HeaderTyper('Welcome') //<---
</script>
第二种方式 - 将 HeaderTyper() 放在 script.js 文件的末尾,因此 function 启动,但您需要为“消息”和“元素”创建链接。
setTimeout(HeaderTyper, speed);
}
}
HeaderTyper(someMessage, someElement) //<---
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.