javascript - 如何在通过 JavaScript 加载时更改另一个页面上的 ID
问题描述
我希望用户单击一个指向另一个页面的按钮。根据用户单击的按钮,尽管页面内容在同一页面上,但看起来应该有所不同。一个简化的例子如下:
起始页html代码:
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<a href="second-page.html" onclick="changeContent('Option One')">Click Here</a>
<a href="second-page.html" onclick="changeContent('Option Two')">Click Here</a>
<script src="script.js"></script>
</body>
</html>
second-page.html 代码:
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<p id="content-id">*CONTENT SHOULD BE LOADED HERE BASED OFF BUTTON CLICKED*</p>
<script src="script.js"></script>
</body>
</html>
script.js 代码:
function changeContent(n) {
document.getElementById("content-id").innerHTML = n;
}
上面的代码不起作用。我猜浏览器在第一页上看不到 content-id 并且在加载第二页之前无法更改任何内容。加载新页面时,有什么方法可以使用 JavaScript(无 jQuery)在正确的页面上引用正确的 id?
解决方案
简短的回答:有几种方法,如果您正在处理同源页面,更容易想到的是使用localStorage
您需要的是在多个页面上提供用户信息。因此,与 不同sessionStorage
的是,localStorage
它允许存储数据并跨浏览器会话保存:
localStorage 与 sessionStorage 类似,不同之处在于虽然 localStorage 数据没有过期时间,但 sessionStorage 数据会在页面会话结束时(即页面关闭时)被清除。
要使用它,请考虑调整首页的 javascript:
function changeContent(n) {
localStorage.setItem('optionChosen', n);
}
然后在第二页的 javascript 中检索它。
var opt = localStorage.getItem('optionChosen')
var content = document.querySelector('#content-id')
if (opt == null) console.log("Option null")
if (opt === 'Option One') content.innerText = "Foo"
if (opt === 'Option Two') content.innerText = "Bar"
推荐阅读
- gradle - 如何在 build.gradle 中声明 gradle 5.0 版?
- azure - 如何为 Azure 函数指定 web.config 中通常包含的内容?
- php - 使用 $_FILE 图像上传更新 SQL Server 表中的 VARBINARY(MAX) 列
- angularjs - 我们可以将 es6 与 AngularJS 一起使用吗
- selenium - 无法在硒的文本框中输入数字
- javascript - 打开授权代码流弹出窗口,获取令牌并在同一个按钮单击时使用它
- c# - KfxReleaseScript 中的 LogError()
- scala - 组织与类型关联的 Scala 隐式
- selenium - 如何在没有 AutoIt 的情况下在 selenium 中下载 chrome 文件时处理“保留”和“丢弃”选项?
- java - Soap 消息级安全性