Ответ 1
Использование 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
При использовании простого объекта, подобного этому, я всегда использую префикс на своих ключах, чтобы избежать проблем. (Например, что произойдет, если ваш идентификатор целевого элемента был "toString"? Объект уже имеет свойство [inherited], называемое "toString", и все получится очень странно очень быстро.)
Итак, для меня я делаю это:
if(event.target == true){
selectedMap["prefix" + event.target.id] = event.target.name;
}
... и, конечно же:
delete selectedMap["prefix" + event.target.id];