在多个文件中的Javascript全局变量在多个文件中的Javascript全局变量(Global

2019-05-10 11:33发布

我的JavaScript代码串是在一个名为helpers.js外部文件。 里面调用此JavaScript代码,我发现自己需要知道,如果从helpers.js某个函数被调用的HTML。

我试图通过定义来创建一个全局变量:

var myFunctionTag = true;

在这两个在我的HTML代码和helpers.js全球范围内。

继承人什么我的HTML代码如下所示:

<html>
...
<script type='text/javascript' src='js/helpers.js'></script>    
...
<script>
  var myFunctionTag = false;
  ...
  //I try to use myFunctionTag here but it is always false, even though it has been se t to 'true' in helpers.js
</script>

正是我试图做甚至是可行的?

Answer 1:

您需要在包括helpers.js文件之前声明变量。 上述包括helpers.js和定义它有简单的创建一个脚本标签。

<script type='text/javascript' > 
  var myFunctionTag = false; 
</script>
<script type='text/javascript' src='js/helpers.js'></script>     
... 
<script type='text/javascript' > 
  // rest of your code, which may depend on helpers.js
</script>


Answer 2:

变量可以在声明.js文件和HTML文件只引用。 我的版本helpers.js

var myFunctionWasCalled = false;

function doFoo()
{
    if (!myFunctionWasCalled) {
        alert("doFoo called for the very first time!");
        myFunctionWasCalled = true;
    }
    else {
        alert("doFoo called again");
    }
}

而一个页面来测试它:

<html>
<head>
<title>Test Page</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<script type="text/javascript" src="helpers.js"></script>
</head>

<body>


<p>myFunctionWasCalled is
<script type="text/javascript">document.write(myFunctionWasCalled);</script>
</p>

<script type="text/javascript">doFoo();</script>

<p>Some stuff in between</p>

<script type="text/javascript">doFoo();</script>

<p>myFunctionWasCalled is
<script type="text/javascript">document.write(myFunctionWasCalled);</script>
</p>

</body>
</html>

你会看到测试alert()会显示两个不同的东西,并写入到页面的值会有所不同,第二次。



Answer 3:

OK,伙计们,这是我的小测试过。 我有一个类似的问题,所以我决定测试一下3种情况:

  1. 一个HTML文件,一个外部JS文件......它在所有的工作 - 可以通过功能一个全局变量沟通?
  2. 两个HTML文件,一个外部JS文件,一个浏览器,两个标签:他们将通过全局变量干扰?
  3. 一个HTML文件,通过浏览器2打开,它会工作,他们会干预?

所有结果均符合预期。

  1. 有用。 函数f1()和f2()通过全局变量(VAR是在外部JS文件,而不是在HTML文件)进行通信。
  2. 他们不干扰。 显然,JS文件的副本不同已经进行了各个浏览器选项卡,每个HTML页面。
  3. 所有独立工作,符合市场预期。

相反,浏览教程,我发现它更容易尝试一下,所以我做到了。 我的结论:只要你包括在HTML页面中一个外部JS文件,外部JS的内容被“复制/粘贴”到你的HTML网页页面之前被渲染。 或到PHP页面,如果你会的。 如果我错了,这里请大家指正。 感谢名单。

我的示例文件如下:

外部JS:

var global = 0;

function f1()
{
    alert('fired: f1');
    global = 1;
    alert('global changed to 1');
}

function f2()
{
    alert('fired f2');
    alert('value of global: '+global);
}

HTML 1:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<script type="text/javascript" src="external.js"></script>
<title>External JS Globals - index.php</title>
</head>
<body>
<button type="button" id="button1" onclick="f1();"> fire f1 </button>
<br />
<button type="button" id="button2" onclick="f2();"> fire f2 </button>
<br />
</body>
</html>

HTML 2

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<script type="text/javascript" src="external.js"></script>
<title>External JS Globals - index2.php</title>
</head>
<body>
<button type="button" id="button1" onclick="f1();"> fire f1 </button>
<br />
<button type="button" id="button2" onclick="f2();"> fire f2 </button>
<br />
</body>
</html>


Answer 4:

喜从一个js文件的值传递给另一个js文件,我们可以使用本地存储的概念

<body>
<script src="two.js"></script>
<script src="three.js"></script>
<button onclick="myFunction()">Click me</button>
<p id="demo"></p>
</body>

Two.js文件

function myFunction() {
var test =localStorage.name;

 alert(test);
}

three.js所档案

localStorage.name = 1;


Answer 5:

我想你应该使用“本地存储”,而不是全局变量。

如果您关注的是“本地存储”可能无法在很老的浏览器所支持,可以考虑使用现有的插件,它检查的“本地存储”的可用性,并使用其他的方法,如果它是不可用的。

我用http://www.jstorage.info/ ,我很高兴与它至今。



Answer 6:

你可以做一个JSON对象,如:

globalVariable={example_attribute:"SomeValue"}; 

在fileA.js

而从fileB.js访问它,如: globalVariable.example_attribute



Answer 7:

// JavaScript文件1

localStorage.setItem('Data',10);

// JavaScript文件2

var number=localStorage.getItem('Data');

不要忘了你的JS文件的HTML链接:)



文章来源: Global variables in Javascript across multiple files