-4

在我的代码中有一个值,我试图将其称为 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; 
}; 
4

3 回答 3

3

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

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

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

但是,您将无法在另一个页面中使用,因为window也会发生变化。

于 2013-09-18T16:39:00.530 回答
0

尝试使用

window.templateArray

代替

var templateArray

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

您还可以在函数范围之外声明变量。例如:

var templateArray = [];
function determineTemplate(customInt) {
于 2013-09-18T16:39:57.220 回答
0

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

我认为全局变量是邪恶的,但如果你确实想要全局变量,我会想到currentParameter.value两种方法。

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

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

window.value= currentParameter.value
于 2013-09-18T16:46:59.713 回答