我正在用Javascript制作一个小型Webapp。除了1个可能简单的东西之外,我让所有东西都可以工作。我有2个必须保持全局性的全局变量,因为稍后必须在其他函数中使用它们:
var staffmembername;
var data = {
"personaldata": [{
"name": staffmembername,
"location": "Iowa"
},
{
"name": "Cynthia",
"location": "California",
}
]
};
'data'数组使用'stafmembername'变量。 “ stafmembername”变量将其值更改为选定的选项值。如您所见,感谢带有警报的测试。数组中的变量似乎如何保持未定义状态。
其余代码:
document.getElementById("confirmchoice").onclick = function() {
var e = document.getElementById("staffmember");
pickedname = e.options[e.selectedIndex].text;
document.getElementById("nr1").value = pickedname;
staffmembername = document.getElementById("nr1").value;
alert(staffmembername);
document.getElementById("h3tl").innerHTML = "name:" + data.personaldata[0].name + "<br>"
+ "location: " + data.personaldata[0].location;
}
如果我将变量放入函数中,则可以,但是其他函数将不起作用。那么有没有办法在保持两个变量都全局的同时更新数组中的变量呢?
staffmembername
会在您初始化data
时进行评估,因为它是按值传递的。因此,它在data
中的值永远不变。您可以将data
包装在函数中。每次调用该函数都会评估staffmembername
,而不仅是在初始化时:
var staffmembername;
var data = function () {
return {
"personaldata": [{
"name": staffmembername,
"location": "Iowa"
},
{
"name": "Cynthia",
"location": "California",
}
]
};
}
};
之所以会这样,是因为您的数据对象已经创建,并且其中的name属性不再被更新。您可以通过调用方法来创建数据对象,这将采用最新值。