使用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];
可能重复(http://stackoverflow.com/questions/208105/how-从一个JavaScript对象中删除属性) – Thomas 2012-05-28 19:42:16