javascript需要帮助使变量全局化

时间:2013-09-18 16:36:49

标签: javascript

在我的代码中,我试图获得名为currentParameter.value的值,我需要将其设置为全局,以便我可以在另一个页面上使用它。由于某种原因,我不能使currentParameter.value全局可用。每当我尝试对它做一个警报时,我都会被定义。我不知道是什么导致它,我认为任何事情都可以成为全球性的。我的代码如下。

 function determineTemplate(customInt) {
     var templateArray = [];
     var hasDropdown = false;
      for(var i=0,maxI=customInt.length;i<maxI;i+=1) {
           var Interaction = customInt[i];

           for(var j=0,maxJ=Interaction.parameterSet.param.length;j<maxJ;j+=1) {
                  var currentParameter = Interaction.parameterSet.param[j];
                  if (currentParameter.name === 'INTERACTION-TYPE') {
                     if (currentParameter.value !== '_itemData') {

                        var intTemplate = {
                            'multipleChoice': {"type" : "04719d91", "data" : Interaction, "id" : Interaction.id},
                            'dragDrop': {"type" : "94ed89c0", "data" : Interaction, "id" : Interaction.id},
                            'dropdown': {"type" : "8a01a4d0", "data" : Interaction, "id" : Interaction.id},
                            'select': {"type" : "b1fb3531", "data" : Interaction, "id" : Interaction.id}
                        };

                        var currentTemp = intTemplate[currentParameter.value];                              

                        if (currentTemplate !== undefined) {
                            if (currentParameter.value === 'dropdown') {
                                if (!hasDropdown) {
                                    templateArray.push(currentTemplate);     
                                    hasDropdown = true;
                                }
                            } else {
                                templateArray.push(currentTemp);     
                            }

                        }

                     }
                  }
           }
     };

     return templateArray; 
}; 

3 个答案:

答案 0 :(得分:3)

要使其全球化,您只需更改此行:

var currentParameter = Interaction.parameterSet.param[j];

window.currentParameter = Interaction.parameterSet.param[j];

但是,您将无法在其他页面中使用,因为window也会更改。

答案 1 :(得分:0)

尝试使用

window.templateArray

而不是

var templateArray

这将在窗口范围内声明变量,基本上是全局的。

您还可以在函数范围之外声明变量。 e.g:

var templateArray = [];
function determineTemplate(customInt) {

答案 2 :(得分:0)

也许我误解了,但是如果你试图在页面之间传递一个变量,你就不能用全局变量做到这一点。相反,您需要通过URL或cookie传递数据,或让服务器以其他方式保留它并在加载时将其发送到页面。

我认为全球变量是邪恶的,但如果你想让currentParameter.value全球化,那么我想到两种方法。

1)在全局范围内定义currentParameter,并在函数中使用它

2)您可以将其添加到全局对象,并调用该对象。

window.value= currentParameter.value