从 HTML 头中的变量读取数组值
Read array value from a variable inside an HTML head
这是 HTML 结构...
<head>
...
<script>
ENV = {...,
current_user: {
id: "314",
display_name: "My name"
}
}
<script/>
...
<head/>
我正在尝试读取“display_name”以用于应用程序的另一部分。
如果我在控制台中按 F12 和 运行,它会返回名称:
console.log(ENV.current_user.display_name)
但下面的内容在上面的同一页面内不起作用:
<script>
const x = ENV.current_user.display_name;
document.getElementById("std").innerHTML = x;
</script>
<h3 id="std"></h3>
如何在这个 h3 中打印“我的名字”?
您可以在所有页面中导入全局配置文件(config.js),然后包含其他脚本
<body>
<h3 id="std"></h3>
<script src="config.js" />
<script>
const x = ENV.current_user.display_name;
document.getElementById("std").innerHTML = x;
</script>
</body>
并且您的配置文件将包含 ENV 变量。
由于页面加载时间的原因,不应在页眉中声明脚本,始终建议将它们放在 body 标记内的末尾
当您的脚本 运行 时,您的 std 元素尚未呈现。这应该有效:
<script>
(function() {
const x = ENV.current_user.display_name;
document.getElementById("std").innerHTML = x;
})();
</script>
放在正文中,正文末尾。
您没有看到名字,因为脚本需要移到正文中。
JavaScript 正在寻找 div 但它返回 NULL,因为您的 JS 在页面加载之前已被调用。
<body>
<h3 id="std"></h3>
</body>
<script>
ENV = {
current_user: {
id: "314",
display_name: "My name"
}
};
const x = ENV.current_user.display_name;
document.getElementById("std").innerHTML = x;
</script>
你的
document.getElementById("std").innerHTML = x;
不起作用,因为您的脚本 运行 在 DOM 完成加载之前,因此它们将 return 为空或未定义。您可以做的是将您的放在 <body></body>
的末尾
这是整个代码的样子:
<head>
<script>
ENV = {
current_user: {
id: "314",
display_name: "My name"
}
}
</script>
</head>
<body>
<h3 id="std"></h3>
<script>
const x = ENV.current_user.display_name;
document.getElementById("std").innerHTML = x;
</script>
</body>
确保您的浏览器 运行 加载 HTML 后的脚本的另一种方法是将 js 脚本分离到不同的文件中,并通过 [= 将其包含在 HTML 中16=]
<script defer src='./filename.js'></script>
单词 defer
告诉浏览器 运行 filename.js
仅当 HTML 加载时。
这是 HTML 结构...
<head>
...
<script>
ENV = {...,
current_user: {
id: "314",
display_name: "My name"
}
}
<script/>
...
<head/>
我正在尝试读取“display_name”以用于应用程序的另一部分。
如果我在控制台中按 F12 和 运行,它会返回名称:
console.log(ENV.current_user.display_name)
但下面的内容在上面的同一页面内不起作用:
<script>
const x = ENV.current_user.display_name;
document.getElementById("std").innerHTML = x;
</script>
<h3 id="std"></h3>
如何在这个 h3 中打印“我的名字”?
您可以在所有页面中导入全局配置文件(config.js),然后包含其他脚本
<body>
<h3 id="std"></h3>
<script src="config.js" />
<script>
const x = ENV.current_user.display_name;
document.getElementById("std").innerHTML = x;
</script>
</body>
并且您的配置文件将包含 ENV 变量。
由于页面加载时间的原因,不应在页眉中声明脚本,始终建议将它们放在 body 标记内的末尾
当您的脚本 运行 时,您的 std 元素尚未呈现。这应该有效:
<script>
(function() {
const x = ENV.current_user.display_name;
document.getElementById("std").innerHTML = x;
})();
</script>
放在正文中,正文末尾。
您没有看到名字,因为脚本需要移到正文中。
JavaScript 正在寻找 div 但它返回 NULL,因为您的 JS 在页面加载之前已被调用。
<body>
<h3 id="std"></h3>
</body>
<script>
ENV = {
current_user: {
id: "314",
display_name: "My name"
}
};
const x = ENV.current_user.display_name;
document.getElementById("std").innerHTML = x;
</script>
你的
document.getElementById("std").innerHTML = x;
不起作用,因为您的脚本 运行 在 DOM 完成加载之前,因此它们将 return 为空或未定义。您可以做的是将您的放在 <body></body>
这是整个代码的样子:
<head>
<script>
ENV = {
current_user: {
id: "314",
display_name: "My name"
}
}
</script>
</head>
<body>
<h3 id="std"></h3>
<script>
const x = ENV.current_user.display_name;
document.getElementById("std").innerHTML = x;
</script>
</body>
确保您的浏览器 运行 加载 HTML 后的脚本的另一种方法是将 js 脚本分离到不同的文件中,并通过 [= 将其包含在 HTML 中16=]
<script defer src='./filename.js'></script>
单词 defer
告诉浏览器 运行 filename.js
仅当 HTML 加载时。