Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript多用户访问混乱_Javascript_Jquery_Html - Fatal编程技术网

Javascript多用户访问混乱

Javascript多用户访问混乱,javascript,jquery,html,Javascript,Jquery,Html,我尝试了一个我感到困惑的场景。这可能是JavaScript101,但我忽略了一点 假设您有一个定义了全局变量的JS库。它还有两个函数叫做setData和retunData。此HTML文件导入上述库 现在在html上,我有一个文本字段和两个按钮。按钮是发送数据和查看数据。流程是,用户键入一些内容,然后单击“发送数据”按钮。在它的onClick上,我获取文本值并将其传递给上面的JS库setData函数,该函数将数据设置为全局变量。当我点击视图数据时,在它的onClick上,它将调用JS库的retur

我尝试了一个我感到困惑的场景。这可能是JavaScript101,但我忽略了一点

假设您有一个定义了全局变量的JS库。它还有两个函数叫做setData和retunData。此HTML文件导入上述库

现在在html上,我有一个文本字段和两个按钮。按钮是发送数据和查看数据。流程是,用户键入一些内容,然后单击“发送数据”按钮。在它的onClick上,我获取文本值并将其传递给上面的JS库setData函数,该函数将数据设置为全局变量。当我点击视图数据时,在它的onClick上,它将调用JS库的returnData函数,我正在提醒这个值

我的问题是,如果我在两个浏览器上运行我的html,如果我在一个浏览器上设置值“one”,那么在同一个浏览器上检索时它会显示“one”。在第二个浏览器上,如果返回值,则应为“1”,因为该变量是全局变量,且值已由第一个浏览器设置

但它作为两个请求工作。它不会覆盖全局变量值。我知道这应该是理想的情况。但是为什么呢?这是一个全局变量,对吗?我希望我的问题是清楚的

在JS库中,我有这个

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;
}
它是“全局”的,可以从当前浏览器中当前页面实例的任何位置访问。