Эта строка кода, с которой вы теперь уточнили свой ответ:
div.innerHTML += " ";
стирает все предыдущие программные обработчики событий, назначенные дочерним элементам myId
, поэтому остается только один добавленный последний - таким образом, почему, таким образом, работает только последний обработчик ввода. Назначение innerHTML повторяет HTML с нуля и повторно инициализирует все эти объекты. Любые программные изменения, внесенные вами (в вашем случае, назначьте обработчик кликов), могут быть потеряны.
Недостатком использования innerHTML для изменения вашей страницы является то, что она может разрушить программно назначенные обработчики событий и другие программные изменения. Я пытаюсь использовать его только при создании нового HTML или при настройке содержимого одного элемента (например, что отображает текст).