在我的代码中,我试图获得名为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;
};
答案 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