Javascript 如何在页面加载函数中设置的onclick函数中干净地使用JS变量
我有一个功能,我已经在Javascript 如何在页面加载函数中设置的onclick函数中干净地使用JS变量,javascript,jquery,Javascript,Jquery,我有一个功能,我已经在 window.addEventListener('load', function() { var variable_name_1 = localStorage.getItem('var_1'); ... } 我想移动功能,使其仅在用户单击按钮时运行,如下所示: function maketempuser() { ... } 我可以在需要时调用函数。但是该函数利用了加载函数中的大量变量。有没有一种干净的方法来“全球化”这些变量?或者我必须找到某种方法在h
window.addEventListener('load', function() {
var variable_name_1 = localStorage.getItem('var_1');
...
}
我想移动功能,使其仅在用户单击按钮时运行,如下所示:
function maketempuser() {
...
}
我可以在需要时调用函数。但是该函数利用了加载函数中的大量变量。有没有一种干净的方法来“全球化”这些变量?或者我必须找到某种方法在html中添加所有这些变量:
<button ... onclick='maketempuser(variable_name_1, variable_name_2, ...);' >
注意:javascript将运行同一个文件,我只是不希望每次用户重新加载页面时它都会重新运行,因为会发生ajax mysql插入,因为该页面是允许用户注册的页面行中的一个。只需在全局范围内定义它们:
var variable_name_1;
window.addEventListener('load', function() {
variable_name_1 = localStorage.getItem('var_1');
...
}
然而,这并不是一种特别健康的技术,因为它容易发生名称冲突。最好的做法是使用一个自定义对象(cO
,或者使用您的首字母缩写,这是其他任何东西都不可能使用的),并将其用作所有自定义变量的占位符:
var cS = {
var_1:null // or some default value...
};
window.addEventListener('load', function() {
cS.var_1 = localStorage.getItem('var_1');
...
}
只需在全局范围内定义它们:
var variable_name_1;
window.addEventListener('load', function() {
variable_name_1 = localStorage.getItem('var_1');
...
}
然而,这并不是一种特别健康的技术,因为它容易发生名称冲突。最好的做法是使用一个自定义对象(cO
,或者使用您的首字母缩写,这是其他任何东西都不可能使用的),并将其用作所有自定义变量的占位符:
var cS = {
var_1:null // or some default value...
};
window.addEventListener('load', function() {
cS.var_1 = localStorage.getItem('var_1');
...
}
为了不让很多变量(这些变量可以被其他应用程序覆盖)污染全局范围,我建议您创建一个具有应用程序特定名称的对象,可能类似这样
var myAppVar = {};
window.addEventListener('load', function() {
myAppVar.var_1 = localStorage.getItem('var_1');
...
}
为了不让很多变量(这些变量可以被其他应用程序覆盖)污染全局范围,我建议您创建一个具有应用程序特定名称的对象,可能类似这样
var myAppVar = {};
window.addEventListener('load', function() {
myAppVar.var_1 = localStorage.getItem('var_1');
...
}
由于
localStorage
已经是全局存储,因此只需从那里检索处理程序中所需的值即可
function maketempuser() {
var variable_name_1 = localStorage.getItem('var_1');
}
根本不需要向全局范围添加任何额外内容。因为
localStorage
已经是全局的,只需从那里检索处理程序中需要的值即可
function maketempuser() {
var variable_name_1 = localStorage.getItem('var_1');
}
根本不需要在全局范围中添加任何额外内容。到目前为止,您尝试了什么?JSFIDLE或类似于您现有代码的代码将有助于回答此问题。请在加载处理程序中的值可用的位置创建单击处理程序。到目前为止,您尝试了什么?JSFIDLE或类似于您现有代码的代码将有助于回答此问题。请将click处理程序放在加载处理程序中的值可用的位置。谢谢,一旦运行了它,我将接受此答案,让我来解释为什么要在全局范围中定义它们?您可以从已经是全局的localStorage获取它们。为什么不在处理程序中需要它们时从那里获取它们呢?@gforce301我在示例中没有明确说明,但并不是我在页面加载中设置的所有变量都是从本地存储中检索的。@Rorschach因此每个人都应该阅读此文:在提问之前。谢谢,一旦我运行了它,我就会接受这个答案,让我来解释为什么要在全局范围内定义它们?您可以从已经是全局的localStorage获取它们。为什么不在处理程序中需要它们时从那里获取它们呢?@gforce301我在示例中没有明确说明,但并不是我在页面加载中设置的所有变量都是从本地存储中检索的。@罗夏因此每个人都应该阅读此文:在提问之前。