繁体   English   中英

从html文件运行外部javascript函数

[英]Running external javascript function from an html file

我做了一些研究,但没有得到任何结果。 就是这种情况。 我有一个html文件和一个javascript文件。 的HTML是:

<html>
<head>
<script src="js/calculateRemainigTime.js"></script>
<script>
reservationTime();
</script>
</head>    
<body>
<button onclick = "reservationTime()">Start</button>
<p id="demo">Result Here</p>
</body>

javascript文件为:

function reservationTime()
{
var date = new Date();
var currHour = date.getHours()
var x = document.getElementById("demo");
x.innerHTML = "The example time is: " + currHour;
}

问题是,当我按下“开始”按钮时,id =“ demo”的“ p”标记的文本不会更改。 谢谢!

在您的JS文件中,您可以:

var x = document.getElementById("demo");

问题是带有“ demo”的元素,因为在加载JS文件时,该ID在DOM中尚不存在。 浏览器在加载和评估JS之后即开始执行JS。 而且,如果您将JS文件放在头上,那么它就会在浏览器知道您体内的任何元素之前执行此操作。

您可以侦听DOMContentLoaded事件 ,该事件指示浏览器在DOM加载后执行JS,或者将JS从头部移动到主体的末端。

您不需要这个:

<script>
reservationTime();
</script>

试试这个代码:

<html>
<head>
<script>
function reservationTime(testVersion){
    var date = new Date();
    var currh = date.getHours();
    var currm = date.getMinutes();
    var currs= date.getSeconds();
    var x = document.getElementById("demo");
    x.innerHTML = "The example time is: " + 
        currh + " hours, " + currm + " minutes and " + 
        currs + " seconds. The test version is: " + testVersion;
}
reservationTime('pre');
</script>
</head>    
<body>
<button onclick = "reservationTime('click')">Start</button>
<p id="demo">Result Here</p>
<script>
reservationTime('post');
</script>
</body>

注意事项:

  1. 我在函数中添加了一个变量'testVersion',然后在三个地方调用它,在页面加载时,如果您注释掉后行(在//的开头放置//,则会看到带有“ post”注释的代码)。行),您将看不到任何更改,这是因为在读取“ pre”行代码后,DOM中不存在#demo标记(它是从上到下遍历代码而创建的)应该可以使用,我增加了几秒钟,以便您每次单击都可以看到更改。

  2. 确认代码可以正常工作后,将其移回外部文件,即可使用chromes Developer工具之类的浏览器工具来确保页面已加载(如果找不到文件,则页面应显示为404)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM