Javascript 为什么赢了';数组中是否有此全局变量更新?
我正在用Javascript制作一个小的Web应用程序。除了一件可能很简单的事情外,我什么都做得很好。我有两个全局变量必须保持全局,因为我以后必须在其他函数中使用它们:Javascript 为什么赢了';数组中是否有此全局变量更新?,javascript,arrays,function,variables,global,Javascript,Arrays,Function,Variables,Global,我正在用Javascript制作一个小的Web应用程序。除了一件可能很简单的事情外,我什么都做得很好。我有两个全局变量必须保持全局,因为我以后必须在其他函数中使用它们: var staffmembername; var data = { "personaldata": [{ "name": staffmembername, "location": "Iowa" }, { "name": "Cynthia", "location
var staffmembername;
var data = {
"personaldata": [{
"name": staffmembername,
"location": "Iowa"
},
{
"name": "Cynthia",
"location": "California",
}
]
};
“data”数组使用“stafmembername”变量。“stafmembername”变量将其值更改为选定的选项值。正如您所看到的,这要感谢alert的测试。数组中的变量似乎始终未定义
代码的其余部分:
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;
}
document.getElementById(“confirmchoice”).onclick=function(){
var e=document.getElementById(“员工成员”);
pickedname=e.options[e.selectedIndex].text;
document.getElementById(“nr1”).value=pickedname;
staffmembername=document.getElementById(“nr1”).value;
警报(staffmembername);
document.getElementById(“h3tl”).innerHTML=“name:+data.personaldata[0]。name+”
”
+位置:“+data.personaldata[0]。位置;
}
如果我把变量放在函数中,它就可以工作,但是我的其他函数就不能工作了。那么,有没有一种方法可以更新数组中的变量,同时保持两个变量的全局性
发生这种情况是因为您的数据对象已经创建,并且其中的name属性没有再次更新。您可以通过调用方法创建数据对象,这将采用最新的值
function getData() {
return {
"personaldata": [{
"name": staffmembername,
"location": "Iowa"
},
{
"name": "Cynthia",
"location": "California",
}
]
};
}
看到这个了吗
另一种选择是将
staffmembername
作为对象并更新其值,这样,您就可以访问更新后的对象
var staffmembername = {value: ''};
var data = {
"personaldata": [{
"name": staffmembername,
"location": "Iowa"
},
{
"name": "Cynthia",
"location": "California",
}
]
};
document.getElementById("confirmchoice").onclick = function() {
var e = document.getElementById("staffmember");
pickedname = e.options[e.selectedIndex].text;
document.getElementById("nr1").value = pickedname;
staffmembername.value = document.getElementById("nr1").value;
alert(staffmembername);
document.getElementById("h3tl").innerHTML = "name:" + data.personaldata[0].name.value + "<br>" + "location: " + data.personaldata[0].location;
}
var staffmembername={value:''};
风险值数据={
“个人数据”:[{
“姓名”:员工成员姓名,
“地点”:“爱荷华州”
},
{
“姓名”:“辛西娅”,
“地点”:“加利福尼亚”,
}
]
};
document.getElementById(“confirmchoice”).onclick=function(){
var e=document.getElementById(“员工成员”);
pickedname=e.options[e.selectedIndex].text;
document.getElementById(“nr1”).value=pickedname;
staffmembername.value=document.getElementById(“nr1”).value;
警报(staffmembername);
document.getElementById(“h3tl”).innerHTML=“name:”+data.personaldata[0]。name.value+”
“+”位置:“+data.personaldata[0]。位置;
}
请参见此发生这种情况是因为您的数据对象已经创建,并且其中的name属性没有再次更新。您可以通过调用方法创建数据对象,这将采用最新的值
function getData() {
return {
"personaldata": [{
"name": staffmembername,
"location": "Iowa"
},
{
"name": "Cynthia",
"location": "California",
}
]
};
}
看到这个了吗
另一种选择是将
staffmembername
作为对象并更新其值,这样,您就可以访问更新后的对象
var staffmembername = {value: ''};
var data = {
"personaldata": [{
"name": staffmembername,
"location": "Iowa"
},
{
"name": "Cynthia",
"location": "California",
}
]
};
document.getElementById("confirmchoice").onclick = function() {
var e = document.getElementById("staffmember");
pickedname = e.options[e.selectedIndex].text;
document.getElementById("nr1").value = pickedname;
staffmembername.value = document.getElementById("nr1").value;
alert(staffmembername);
document.getElementById("h3tl").innerHTML = "name:" + data.personaldata[0].name.value + "<br>" + "location: " + data.personaldata[0].location;
}
var staffmembername={value:''};
风险值数据={
“个人数据”:[{
“姓名”:员工成员姓名,
“地点”:“爱荷华州”
},
{
“姓名”:“辛西娅”,
“地点”:“加利福尼亚”,
}
]
};
document.getElementById(“confirmchoice”).onclick=function(){
var e=document.getElementById(“员工成员”);
pickedname=e.options[e.selectedIndex].text;
document.getElementById(“nr1”).value=pickedname;
staffmembername.value=document.getElementById(“nr1”).value;
警报(staffmembername);
document.getElementById(“h3tl”).innerHTML=“name:”+data.personaldata[0]。name.value+”
“+”位置:“+data.personaldata[0]。位置;
}
见此
staffmembername
在初始化数据时进行计算,因为它是按值传递的。所以它在数据中的值永远不会改变。您可以将数据
包装到函数中staffmembername
将在每次调用函数时进行计算,而不仅仅是在初始化时:
var staffmembername;
var data = function () {
return {
"personaldata": [{
"name": staffmembername,
"location": "Iowa"
},
{
"name": "Cynthia",
"location": "California",
}
]
};
}
};
然后像这样使用它:
data().personaldata[0]。位置
您还可以将对象用于staffmembername
var staffmembernameObject = {};
var data = [{
personaldata: [{
name: staffmembernameObject,
...
staffmembernameObject.data = document.getElementById("nr1").value;
然后像这样使用它:
data.personaldata[0].name.datastaffmembername
在初始化数据时进行计算,因为它是按值传递的。所以它在数据中的值永远不会改变。您可以将数据
包装到函数中staffmembername
将在每次调用函数时进行计算,而不仅仅是在初始化时:
var staffmembername;
var data = function () {
return {
"personaldata": [{
"name": staffmembername,
"location": "Iowa"
},
{
"name": "Cynthia",
"location": "California",
}
]
};
}
};
然后像这样使用它:
data().personaldata[0]。位置
您还可以将对象用于staffmembername
var staffmembernameObject = {};
var data = [{
personaldata: [{
name: staffmembernameObject,
...
staffmembernameObject.data = document.getElementById("nr1").value;
然后像这样使用它:
data.personaldata[0].name.data这是否回答了您的问题?您试图引用一个javascript不支持的基本值(尽管ES2015添加了getter,这会起作用)。这是否回答了您的问题?您正试图引用一个基本值,javascript不支持该值(尽管ES2015添加了getter,这会起作用)。