2015-08-06 3 views
0

я генерация динамической формы в JavaScript, и когда я удалить форму по идентификатору я не знаю, как установить идентификаторы в порядке 1,2,3 ... Вы можете просмотреть свой код на jsfiddleКак изменить идентификатор формы после удаления динамически?

https://jsfiddle.net/wdLtv01x/1/

if (document.getElementById(childDiv)) 
{ 
    var child = document.getElementById(childDiv); 
    child.parentNode.removeChild(child); 
    i--;  
} 

и извините за мой плохой английский.

СПАСИБО.

ответ

2

При добавлении i--; в ваш removeElement функция, это работает отлично, я думаю.

window.removeElement = function(parentDiv, childDiv){ 

    if (document.getElementById(childDiv)){ 
     var child = document.getElementById(childDiv); 
     child.parentNode.removeChild(child); 
     i--; 
     //decrement();  
    } 
}; 

Update после комментариев:

Я добавил класс для каждой созданной формы, то я петлю во всех элементах, которые имеют этот класс и обновлять номер формы.

var forms = document.getElementsByClassName('interview-form'); 
console.log(forms); 
for(var j = 0; j < forms.length; j++){ 
    console.log(forms[j].getElementsByTagName('h2')); 
    forms[j].getElementsByTagName('h2')[0].innerHTML = 'Interview '+ (j+2); 
} 

Сценарий обновляется (но я просто сделал это для элемента H2). Если у вас есть дополнительные вопросы, напишите комментарий.

См updated fiddle

+0

если я создать 3 форму и я удалить Seconde один я имею interview1 и interview3, и мне нужно иметь interview1, interview2 – Hafsa

+0

О порядке, Ждут» я пойму это так, я посмотрю – Mteuahasan

+0

Спасибо! Извините, я не был достаточно ясен с моим вопросом !! – Hafsa

2

Поскольку вы добавить JQuery на вашей скрипке, поэтому я использую JQuery, потому что это более кратким.

Во-первых, для более легкого выбора я добавляю класс interview к каждому divs. Затем, когда вы удаляете div, попробуйте сохранить индекс удаленного div. Наконец, уменьшите значение всех div, у которых есть index> = удаленный индекс.

window.removeElement = function(parentDiv, childDiv){ 

    if (document.getElementById(childDiv)){ 
     var child = document.getElementById(childDiv); 
     child.parentNode.removeChild(child); 

     //save the index of removed element 
     var removed_index = Number(childDiv.split("_")[1]); 

     //add class interview to all divs 
     $(".interview").each(function(index){ 
      if(index + 1 >= removed_index){ 
       //if true, change the title and id 
       $(this).find("h2").text("Interview "+(index+1)); 
       $(this).attr("id", "id_"+(index + 1)); 
       $(this).find("button").attr("onclick", "removeElement('myCandidat','id_"+(index + 1)+"')"); 
      } 
     }); 
     i--; 
     //decrement();  
    } 
}; 

Вот мой Fiddle для дальнейшего тестирования ..

+0

Спасибо за решение: D! но когда я пытаюсь удалить вторую форму, она не работает? – Hafsa

+0

Я забыл переименовать строку в функцию onclick. Уже редактировал код и скрипку. –

+0

Спасибо, что он работает отлично! – Hafsa

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