javascript - 如何在我的 HTML 中运行 JavaScript 函数
问题描述
我用 JS 代码编写了一个函数,我想从 HTML 运行它,但是当我运行该站点时,我没有看到任何反应。
我将向您展示 html 代码和 js 代码的示例。
<!DOCTYPE html>
<html lang="en">
<head>
<link rel="stylesheet" href="test.js">
<script src="test.js"></script>
</head>
<body onload="add()">
<p id="add2"></p>
</body>
</html>
这里开始JS代码
function add(a,b,c,d) {
return a + b + c + d;
}
document.getElementById("add2").innerHTML = add(5,10,15,20);
我希望我写得很清楚,有人会告诉我,我做错了什么?
解决方案
当浏览器加载 HTML 页面时,它会从上到下读取您的 HTML。
所以排序很重要。
当然也有复杂性。我在这里不是在谈论延迟或异步脚本。但是从上到下的简化有助于我们了解您的问题。
你的脚本在里面test.js
,所以它会在 [body] 准备好之前被加载和运行。
但是test.js
有这条线:
document.getElementById("add2").innerHTML = add(5,10,15,20);
此行不在函数内部,因此浏览器将尝试立即运行它。
调用add()
将起作用,因为它已在文件中声明。但document.getElementById("add2")
不会,因为它是在 [body] 中访问以下 HTML 的指令:
<p id="add2"></p>
但是 [body] 还没有被“读取”,所以 JavaScript DOM API 不知道它。
但是,您已经使用onload
[body] 标记的属性部分解决了问题。您刚刚使用了错误的功能。
这是在完全读取 [body]之后onload
运行函数的指令。因此,如果您将行更改为函数内部:document.getElementById
function runWhenBodyHasLoaded () {
document.getElementById("add2").innerHTML = add(5,10,15,20);
}
并告诉 [body] 标签在所有内容加载后运行该函数:
<body onload="runWhenBodyHasLoaded()">
然后<p id="add2"></p>
将准备好及时访问它document.getElementById
。
推荐阅读
- reinforcement-learning - Sutton 的 RL 书中的 Gridworld:如何计算角单元的值函数?
- python - 如何在 OpenCV Python 中制作空灰度图像?
- java - Java:如何在 CameraX previewView 上绘图?
- java - 为什么我的代码在写“bmi”后终止(你想做什么)
- winscp - WinSCP - LS 命令行语法?
- excel - 首先显示所有可用的唯一日期
- r - scale_fill_fermenter() 的自定义调色板
- android - 为什么导航返回后会创建一个新的 ViewModel 实例?
- python - 在 Python 中查找和删除不按顺序排列的条目
- mysql - SQL Query 适用于 `like` 但不适用于某些 id 的 equals