如何从对象中删除属性?
当前事件设置为checkboxes
,event.target
给我点击的复选框的status (checked = true/false)
。如何从对象中删除属性?
我保持这使所有选定的复选框
var selectedMap = {};
if(event.target == true){
var key = event.target.id;
var val = event.target.name;
selectedMap[key] = val;
}
跟踪的对象,我想从地图是未选
else if(event.target == false){
selectedMap.remove(event.target.id);
}
当我运行这一点,
删除元素给我错误Firebug
:selectedMap.remove is not a function
所以我的问题是如何c当复选框未被选中时,我删除元素?
使用delete
:
delete selectedMap[event.target.id];
你没有正确地设定值,虽然。下面是正确的方法:
if(event.target == true){
var key = event.target.id; // <== No quotes
var val = event.target.name; // <== Here either
selectedMap[key] = val;
}
事实上,你可以:
if(event.target == true){
selectedMap[event.target.id] = event.target.name;
}
获取事件目标东西出来的方式,它更容易与简单的字符串设想这样的:
var obj = {};
obj.foo = "value of foo";
alert(obj.foo); // alerts "value of foo" without the quotes
alert(obj["foo"]); // ALSO alerts "value of foo" without the quotes, dotted notation with a literal and bracketed notation with a string are equivalent
delete obj.foo; // Deletes the `foo` property from the object entirely
delete obj["foo"]; // Also deletes the `foo` property from the object entirely
var x = "foo";
delete obj[x]; // ALSO deeltes the `foo` property
当使用这样的普通对象时,我总是在我的键上使用前缀以避免问题。 (例如,如果你的目标元素的ID是“toString”会发生什么?该对象已经有一个名为“toString”的[inherited]属性,并且事情很快会变得非常奇怪)。这样的:
if(event.target == true){
selectedMap["prefix" + event.target.id] = event.target.name;
}
...当然:
delete selectedMap["prefix" + event.target.id];
+1 - 好建议 – 2010-11-14 15:32:20
J.Crowder:现在删除工作正常,感谢您的输入。 – Rachel 2010-11-14 15:40:46
http://*.com/questions/6485127/how-to-delete-unset-the-properties-of-a-javascript-object刚才incase你想第二次想到删除 – 2012-08-03 12:12:27
你有什么是对象,而不是一个数组(尽管数组是一个对象)。你用{}
声明一个对象字面值,而数组字面量用[]
声明。
您可以使用delete
删除一个对象的属性,像这样
delete selectedMap[event.target.id];
的[如何从一个JavaScript对象删除属性]
可能重复(http://*.com/questions/208105/how-从一个JavaScript对象中删除属性) – Thomas 2012-05-28 19:42:16