Javascript多用户访问混乱
我尝试了一个我感到困惑的场景。这可能是JavaScript101,但我忽略了一点 假设您有一个定义了全局变量的JS库。它还有两个函数叫做setData和retunData。此HTML文件导入上述库 现在在html上,我有一个文本字段和两个按钮。按钮是发送数据和查看数据。流程是,用户键入一些内容,然后单击“发送数据”按钮。在它的onClick上,我获取文本值并将其传递给上面的JS库setData函数,该函数将数据设置为全局变量。当我点击视图数据时,在它的onClick上,它将调用JS库的returnData函数,我正在提醒这个值 我的问题是,如果我在两个浏览器上运行我的html,如果我在一个浏览器上设置值“one”,那么在同一个浏览器上检索时它会显示“one”。在第二个浏览器上,如果返回值,则应为“1”,因为该变量是全局变量,且值已由第一个浏览器设置 但它作为两个请求工作。它不会覆盖全局变量值。我知道这应该是理想的情况。但是为什么呢?这是一个全局变量,对吗?我希望我的问题是清楚的 在JS库中,我有这个Javascript多用户访问混乱,javascript,jquery,html,Javascript,Jquery,Html,我尝试了一个我感到困惑的场景。这可能是JavaScript101,但我忽略了一点 假设您有一个定义了全局变量的JS库。它还有两个函数叫做setData和retunData。此HTML文件导入上述库 现在在html上,我有一个文本字段和两个按钮。按钮是发送数据和查看数据。流程是,用户键入一些内容,然后单击“发送数据”按钮。在它的onClick上,我获取文本值并将其传递给上面的JS库setData函数,该函数将数据设置为全局变量。当我点击视图数据时,在它的onClick上,它将调用JS库的retur
var checkVal;
function setData(val){
checkVal = val;
}
function viewData(){
return checkVal;
}
我的html就是这个
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<script src="js/jsLibrary.js"></script>
<script src="js/jquery-2.1.1.min.js"></script>
<title></title>
<script type="application/javascript">
function sendData(){
var val = $("#idTextVal").val();
setData(val);
}
function viewData(){
alert(returnData());
}
</script>
</head>
<body>
<input type="text" id="idTextVal">
<input type="button" id="idConnect" onclick="sendData()" value="SEND">
<input type="button" id="idChecj" onclick="viewData()" value="VIEW">
</body>
</html>
函数sendData(){
var val=$(“#idTextVal”).val();
setData(val);
}
函数viewData(){
警报(returnData());
}
为什么??这是一个全局变量,对吗
它是全局的,但是对于这个特定的选项卡/页面实例。若您在其他选项卡中打开同一页面,javascript引擎将初始化所有变量,因为它不知道您有其他选项卡
在你的情况下,你有多种选择。也许,最简单的方法是使用服务器端存储来保存状态。或者您可以使用简单的cookies/localStorage方法,它们也由同一来源上的所有页面共享。我会选择更简单的:
function setData(val) {
localStorage.checkVal = val;
}
function viewData() {
return localStorage.checkVal;
}
它是“全局”的,可以从当前浏览器中当前页面实例的任何位置访问。