JavaScript-функция удаления не работает (абсолютный новичок) - PullRequest
0 голосов
/ 24 мая 2018

Прежде всего: извините за этот ужасный код.Я абсолютный новичок, и это мой самый первый JS-код, и мне приходилось кодировать его под давлением времени (не очень хорошо).

Задача состояла в том, чтобы написать гостевую книгу.У меня есть функция, которая создает новый div для каждой записи и добавляет его к последней (эта часть работает хорошо).

var lastid = 2;

function eintragen() {

    ...

    var divC = document.createElement('div');

    var ident='item'+lastid;

    divC.innerHTML = '<table id="'+ident+'" class="eintrag center">  
    <tr><td>Name:</td><td>'+name2+'</td></tr><tr>
    <td>Email:</td><td>'+email2+'</td></tr> 
    <tr><td>Eintrag</td><td>'+nachricht2+'</td></tr>
    <tr><td></td><td><button class="buttonklein"value="loeschen"

    ***onclick="loeschen('+ident+')"***

    >Eintrag löschen</button></td></t></table><hr>';



    **divC.setAttribute('id',ident);**

    var add = document.getElementById('item1');
    add.appendChild(divC);


    lastid+=1;

    ...

}  

Я попытался выделить соответствующую часть.Как вы можете видеть, я дважды передавал идентификатор divC, потому что после тестирования я выяснил, что он не работает в сегменте divC.innerHTML.

Каждая запись имеет собственный delete-Кнопка, которая должна - как вы уже догадались - удалить эту связанную запись. После нажатия кнопки запускается функция, но затем ничего не происходит.

function loeschen(itemid) {

   var sitem = document.getElementById(itemid); 
   sitem.parentNode.removeChild(sitem);
}

Полагаю, что назначение идентификатора для divC не сработалов части «divC.innerHTML» также не работает назначение его в качестве параметра атрибуту «onclick».

Если я заменим itemid чем-то конкретным, например, 'item4' в функции loeschen, он удалит запись № 4, поэтому я предполагаю, что ошибка в части divc.innerHTML.

Вопрос: Где я ошибся?Что-то не так "или" "?Как я могу дать каждой кнопке текущий itemid?все работало нормально для других переменных, таких как имя или адрес электронной почты, поэтому я абсолютно ничего не понимаю.

Большое спасибо заранее и извините за мой плохой стиль.Я буду работать над этим в будущем.

1 Ответ

0 голосов
/ 24 мая 2018

Пользователь Teemu нашел ответ очень быстро и очень помог.Это был действительно плохой синтаксис в divC.innerHTML-сегменте.Это делает работу:

    divC.innerHTML = `<table id="${ident}" class="eintrag center">  
    <tr><td>Name:</td><td>${name2}</td></tr><tr>
    <td>Email:</td><td>'+email2+'</td></tr> 
    <tr><td>Eintrag</td><td>${nachricht2}</td></tr>
    <tr><td></td><td><button class="buttonklein" value="loeschen"
    onclick="loeschen('${ident}')">Eintrag löschen</button>
    </td></t></table><hr>`;
...