【问题标题】:Access js variable of one file in another file using JQuery使用JQuery访问另一个文件中一个文件的js变量
【发布时间】:2017-12-08 04:15:25
【问题描述】:

我有 2 个 js 文件:1.js 和 2.js。
在 1.js 我有一个变量

var test ='Hello';

我正在尝试访问 2.js 中的变量

alert(test);

示例代码:
1.js:

$(document).ready(function () {
    var test = 'Hello';
});

2.js:

 $(function () {
       function getData(){
            alert(test);
       }
   }); 

在我的js文件的aspx页面顺序中:

<script type="text/javascript" src="js/1.js"></script>      
<script type="text/javascript" src="js/2.js?"></script> 

我知道这个问题被问过很多次,但似乎没有一个答案对我有用。

【问题讨论】:

  • JS 不是这样工作的。 test 的作用域是它定义的函数,这里是匿名函数传入 jQuery 的 DOMReady 快捷方式。

标签: javascript jquery


【解决方案1】:

确保您的 var test 不在函数内,并且您的文件以正确的顺序加载。 在你的第一个文件中使用类似

<script type="text/javascript">
  var test = "myVar"
</script>
// Now here include your js file too JS file 
// Or set in window scope like window.test="myVar";

在你的JS file 中使用类似

$(function() {
  alert(test);
  // alert(window.test);
});

可以从所有 javascript 文件访问全局范围内的变量。 你的第一个 js 文件

这是另一种方式。

//first.js file don't put variable inside any function here.
var globalVariable={
   test: 'myVar'
};

还有你的第二个 js 文件

//second.js file
alert(globalVariable.test);

并在html页面中添加

<script type="text/javascript" src="first.js"></script> 
<script type="text/javascript" src="second.js"></script> 

More from here

【讨论】:

    【解决方案2】:

    可以使用sessionStorage来存储变量值

    $(document).ready(function () {
      sessionStorage.setItem('test ', 'Hello');
    });
    

    在下一个文件中使用

    检索它
    $(function () {
           function getData(){
             var data = sessionStorage.getItem('test');
                alert(data );
           }
       });
    

    注意文件1.js需要在2.js之前加载

    【讨论】:

    • 重要的是要注意存储只存储字符串......布尔值和数字需要在检索时进行类型转换,并且数组/对象需要进行字符串化和解析
    猜你喜欢
    • 1970-01-01
    • 2015-07-07
    • 2018-09-26
    • 1970-01-01
    • 2014-09-20
    • 1970-01-01
    • 2020-02-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多