想法是在一个页面进行操作后,修改全局变量的值,同时可以在另一个页面能够使用被修改后的全局变量的值。
t1.html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script src="https://code.jquery.com/jquery-3.6.0.min.js" integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script>
<button id="tb">修改全局变量</button>
<script src="t1.js"></script>
</body>
</html>
t1.js:
var name = "空名";
$('#tb').click(
function (){
name = "世纪工程";
alert(name);
}
);
t2.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script src="https://code.jquery.com/jquery-3.6.0.min.js" integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script>
<p id="tp">测试文字</p>
<script src="t1.js"></script>
<script src="t2.js"></script>
</body>
</html>
t2.js
$(function (){
document.getElementById('tp').textContent = name;
});
测试结果,在 t2.html 中能拿到全局变量 name 的初始值 “空名” 。但是如果在 t1.html 点击按钮后,修改 name = “世纪工程” ,在 t2.html 中任然只能拿到初始值 “空名”。似乎在 click 函数中根本没有修改全局变量 name,而是函数内构造了一个局部变量 name。(js学的还不是很好)
那么该怎么事项在另一个页面中拿到被修改的全局变量的值呢?望大佬传道授业解惑。
把值存入cookie,另外一个页面读取当前域名下的cookie即可。
感谢感谢,之前没想到存入cookie。
全局变量也仅限于同一窗口下,不同页面相互之间是没有关系的,要共享需要用到跨文档通信手段,比如 postMessage
非常感谢提供思路。
两个页面就是两个变量了,不管你是不是同名,你可能弄混了,事实上页面上很多数据都是从数据库中取出来的,然后渲染到页面,如果修改,修改后也会同步更新到数据库,这样所有地方都会同步更新
确实对全局变量的概念有误解,感谢。