首页 新闻 会员 周边 捐助

js函数内修改全局变量

1
悬赏园豆:10 [已解决问题] 解决于 2022-01-24 12:45

想法是在一个页面进行操作后,修改全局变量的值,同时可以在另一个页面能够使用被修改后的全局变量的值。

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学的还不是很好)
那么该怎么事项在另一个页面中拿到被修改的全局变量的值呢?望大佬传道授业解惑。

up-bear的主页 up-bear | 初学一级 | 园豆:134
提问于:2022-01-23 17:38
< >
分享
最佳答案
0

把值存入cookie,另外一个页面读取当前域名下的cookie即可。

收获园豆:6
顾星河 | 大侠五级 |园豆:7281 | 2022-01-24 08:37

感谢感谢,之前没想到存入cookie。

up-bear | 园豆:134 (初学一级) | 2022-01-24 12:32
其他回答(2)
0

全局变量也仅限于同一窗口下,不同页面相互之间是没有关系的,要共享需要用到跨文档通信手段,比如 postMessage

收获园豆:2
by.Genesis | 园豆:2824 (老鸟四级) | 2022-01-24 02:00

非常感谢提供思路。

支持(0) 反对(0) up-bear | 园豆:134 (初学一级) | 2022-01-24 12:41
1

两个页面就是两个变量了,不管你是不是同名,你可能弄混了,事实上页面上很多数据都是从数据库中取出来的,然后渲染到页面,如果修改,修改后也会同步更新到数据库,这样所有地方都会同步更新

收获园豆:2
刘下来 | 园豆:919 (小虾三级) | 2022-01-24 10:19

确实对全局变量的概念有误解,感谢。

支持(0) 反对(0) up-bear | 园豆:134 (初学一级) | 2022-01-24 12:38
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册