innerhtml - 我正在尝试动态更改我的 div 的文本,但它不起作用
问题描述
我正在尝试做一些简单的事情,例如将<p>
标签中的文本从“你好”更改为“再见:但我无法让它工作。
这是我的html
<body>
<div id="passwordBox">
<!-- <div id="title">
<span>PASSWORD GENERATOR</span>
</div> -->
<p id="password">Hello</p>
</div>
</body>
这是我的js
document.getElementById('password').innerHTML = "goodbye";
我的 js 在我的脑海中正确链接。我在那里的其他功能正常工作。所以我想知道问题是什么。我确定这很简单,我只是没有看到,但我无法弄清楚。
解决方案
HTML 执行自上而下发生。HTML 在解析 HTML 文档时调用它找到的每个脚本。由于您将脚本放在“head”中,因此脚本会立即被调用。当脚本被调用时,你的 DOM 还没有准备好,你的脚本访问你的 DOM 元素返回一个空值。因此,在您的 DOM 完全加载后加载脚本,即在 body 之后或“”之前
所以理想的代码应该是这样的:
<html>
<body>
<div>
<p id="password">Hello</p>
</div>
</body>
<script>
document.getElementByID("password").innerHTML="goodbye";
</script>
</html>
或者您仍然可以从头部加载您的脚本,但只需添加一个按钮以及事件侦听器 ( onClick
),该事件侦听器 ( ) 在单击按钮时调用 JavaScript 函数。
<!DOCTYPE html>
<html>
<head>
<script>
function changeContent() {
document.getElementById("demo").innerHTML="goodbye";
}
</script>
</head>
<body>
<p id="password">Hello</p>
<button onclick="changeContent()">Try it</button>
</body>
</html>
推荐阅读
- ruby-on-rails - SystemStackError(堆栈级别太深) - 呈现 JSON
- linux - TMUX 和代理?
- html - Powershell:将生成的表写入 html 文件
- java - 如何从 JAVA 11 中的流 filter() 中获取第一个匹配元素?
- azure - 有没有办法下载 azure sql 数据库托管备份
- c# - 将用户控件列表插入特定的列和行
- java - 使用 Spark 替换连接函数
- sql - Snowflake 使用 Streams 跟踪表的更新/删除
- c# - 从 HoloLens 2 访问计算机上的数据库文件
- android - 从外部下载文件夹加载文件以在 Flutter 应用程序中使用