2013-07-22 3 views
0

У меня есть словарь в java-скрипте, добавление ключа и текста в событие перетаскивания.Javascript delete object form dictionary

Теперь, когда пользователь нажимает на это нужно удалить ключ, но это не удаляя из словаря

var buttonId = {}; 

function drag(ev) { 

       //buttonId.push(ev.target.id,ev.target.innerText); 
       var index = Object.keys(buttonId).length; 
       buttonId['[' + index + '].Key'] = ev.target.id; 
       buttonId['[' + index + '].Value'] = ev.target.innerText; 
      } 

функции удаления

function Delete(key){ 
    delete buttonId[key]; 
    } 

spliceMethod также din't работы, я я использую JQuery 2.0, получая ошибку времени выполнения. Объект не поддерживает свойство или метод «сращивание»

 var length = Object.keys(buttonId).length; 
     for (var index = 0; index < length; index++) { 
      var key = buttonId['[' + index + '].Key']; 
      if (key == id) { 
       buttonId.splice(index, 1); 
      } 
     } 
+0

у меня нет понять, что вы пытаетесь сделать. Вы пытаетесь сделать sth как buttonId1.key = sth ,, butoonId2.key .... sth, как это? –

+0

Ват является 'delete' return (t/f)? –

ответ

0

Наконец он работал как этот

var length = Object.keys(buttonId).length; 
       for (var index = 0; index < length; index++) { 
        var key = buttonId['[' + index + '].Key']; 
        if (key == id) { 
         delete buttonId['[' + index + '].Key']; 
         delete buttonId['[' + index + '].Value']; 
        } 
       } 
0

Вы, кажется, не используете Javascript-карты, как они предназначены для использования. Правильная картина:

buttonId[key] = value; 

Если вам нужно хранить сложные данные в качестве значения, то сделать что-то вроде:

buttonId[key] = {id:ev.target.id, text:ev.target.innerText}; 
+0

buttonId [key] = значение, как мне получить форму значения формы buttonId в другой функции –

+0

Словарь/карта ищет значение по ключу. Если вам нужно выполнить поиск по buttonId, тогда сделайте это своим ключом. Если вам нужно выполнить поиск по двум различным клавишам, сделайте два словаря. –