2016-01-23 8 views
0

У меня проблема с хранением значений в динамически создаваемых кнопках, которые могут открыть диалог.

Диалог одинаков для всех кнопок, так что я есть определение так:ценность хранилища (ID) для динамически создаваемых диалогов

$('<div id="dialog-form" title="Change coordinates">' + 
     '<p class="validateTips">Both fields are required.</p>' + 
     '<form>' + 
     '<fieldset>' + 
     '<label for="lon">Longitude (decimal)</label>' + 
     '<input type="text" name="lon" id="lon" value="" class="text ui-widget-content ui-corner-all">' + 
     '<label for="lat">Latitude (decimal)</label>' + 
     '<input type="text" name="lat" id="lat" value="" class="text ui-widget-content ui-corner-all">' + 
     '<input type="submit" tabindex="-1" style="position:absolute; top:-1000px">' + 
     '</fieldset>' + 
    '</form>' + 
    '</div>').appendTo(document.body); 

Затем я порождающая диалоговые кнопки с специальной кнопкой «создать»:

$("#create").button().on("click", function() 
    { 
      var btn1 = document.createElement("BUTTON"); 
      btn1.id = "change_coord"; 
      var t1 = document.createTextNode("Change coordinates"); 
      btn1.appendChild(t1); 
      document.body.appendChild(btn1); 
      generator++; 
    }); 

Тогда у меня есть диалоговое заявление и функции для работы с моими вкладками диалога, и после этого я пытаюсь распечатать входы и мой идентификатор (значение от генератора). Входы классные, но id не работает.
Например, я генерирую 3 кнопки, такие как btn1: 1, btn2: 2, btn3: 3 (кнопка: id), но вывод id для всех кнопок равен 3.
Мое приложение будет создавать динамически объекты, и я хочу изменить эти объекты в этом диалоговом окне. И значение «ID» будет использоваться как «указатель» на мою БД. Поэтому, когда я нажимаю первую созданную кнопку, не имеет значения, сколько кнопок я создал, она все равно должна иметь значение «ID» == 1
FIDDLE для моделирования моей ситуации.
Спасибо вам всем за ваше время и мнение.

+0

Кажется слишком сложным, но не совсем уверенным, что именно вы пытаетесь сделать с созданием нескольких диалогов, которые все одинаковы. Почему бы не использовать один диалог? – charlietfl

+0

@charlietfl потому что мое приложение создаст динамически объекты, и я хочу изменить эти объекты в этом диалоговом окне. И значение «ID» будет использоваться как «указатель» на мою БД. Поэтому, когда я нажимаю кнопку первого создания, не имеет значения, сколько кнопок я создал, он все равно должен иметь значение «ID» == 1 –

ответ

0

Идентификаторы должны быть уникальными, но ваша функция порождает клонированные кнопки с одинаковыми идентификаторами.

btn1.id = "change_coord"; 

Либо сделать что-то, чтобы сделать их уникальными, или использовать классы.


Выпуск № 2

Вы используете вар generator, чтобы генерировать идентификаторы (больше не говорить об идентификаторах HTML, как указано выше). Затем вы пытаетесь получить доступ к значению генератора при вызове addUser, ожидая, что вы получите значение generator с момента создания диалога. Это не работает, вы всегда получите текущее значение значение generator. Чтобы исправить это, вам нужно увеличивать генератор внутри функции addUser, а не при создании этих кнопок со щелчком. См. Здесь: https://jsfiddle.net/7rr85xuw/2/

+0

Считаете ли вы, что классы могут решить мою проблему? –

+0

Идентификаторы, безусловно, являются проблемой здесь, но я не уверен, есть ли больше проблем. Не возражаете ли вы показать в своем вопросе, как вы читаете идентификаторы? – Shomz

+0

Возможно, в ID есть небольшое недоразумение, я имею в виду идентификатор, как назначить специальное значение моей кнопке. Этот идентификатор будет использоваться как «указатель» на мою БД, где я хочу хранить входы диалогового окна. И в приложении я буду динамически генерировать объекты, и каждый объект будет иметь эту кнопку с уникальным «указателем». –

Смежные вопросы