innerHTML
- это ярлык для создания элементов DOM.Когда вы добавляете что-то к внешнему элементу div с помощью innerHTML
, происходит следующее:
D.innerHTML += "What about Tupac?";
, что совпадает с
D.innerHTML = D.innerHTML + "What about Tupac?";
, что равно*
D.innerHTML = "<button>Is it true?</button>" + "What about Tupac?";
, который в итоге становится этим,
D.innerHTML = "<button>Is it true?</button>What about Tupac?";
Теперь на последнем шаге мы полностью заменили существующее содержимое div новой строкой, содержащей HTML.Что касается DOM, то не имеет значения, напечатал ли пользователь HTML вручную или он вызвал innerHTML
на узле DOM.Все, что его волнует, это то, что он имеет строку HTML, которая должна быть преобразована в DOM.В это время создается новый элемент кнопки, поэтому onclick
перестает работать - это уже не тот элемент.