function insertGreeting(text, target) {
const div = document.createElement('div');
const b = document.createElement('b');
b.textContent = text;
div.appendChild(b);
target.appendChild(div);
}
echo base64_encode(hex2bin('1de965a3e4e8b2d7ab'));
//--> Hello+Toster
function myAddListeners(selector, eventType, handler) {
const elements = document.querySelectorAll(selector);
if (!elements.length) return false;
elements.forEach(elem => elem.addEventListener(eventType, handler));
return true;
}
Потому что при изменении innerHTML перезаписываетcя весь HTML код в контейнере, и слетают скрипты
Проведем эксперимент:
Создадим элемент с надписью 'click me', и добавим скрипт, который что-то делает (добавляет восклицательные знаки, например).
При вставке через appendChild или insertAdjacent или любым другим способом кроме innerHTML скрипт продолжает работать.
При вставке через innerHTML ломается. Потому вставка через innerHTML происходит так:
1. берется содержимое контейнера,
2. из него формируется строка с html-кодом
3. к ней добавляется то, что вы хотите вставить
4. все это вставляется в целевой элемент.
И на пункте №2 скрипты отваливаются.
При этом совершенно безопасно вставлять через innerHTML в пустой элемент, например.