With JQuery i had this :
let searchHeader= $(".block-amu-search-form__title");
let closeButton = "<div class=\"callout\" data-closable>\n" +
" <button class=\"close-button\" aria-label=\"Close alert\" type=\"button\" data-close>\n" +
" <span aria-hidden=\"true\">×</span>\n" +
" </button>\n" +
"</div>"
searchHeader.append(closeButton);
How to convert in JS ?
let searchHeader= document.querySelector(".block-amu-search-form__title");
let closeButton = "<div class=\"callout\" data-closable>\n" +
" <button class=\"close-button\" aria-label=\"Close alert\" type=\"button\" data-close>\n" +
" <span aria-hidden=\"true\">×</span>\n" +
" </button>\n" +
"</div>"
searchHeader.append(closeButton);
This insert the button as a string and appendChild required a node object
You're trying to append a string to an html element. you should do this instead
let searchHeader = document.querySelector(".block-amu-search-form__title");
let closeButton = "<div class=\"callout\" data-closable>\n" +
" <button class=\"close-button\" aria-label=\"Close alert\" type=\"button\" data-close>\n" +
" <span aria-hidden=\"true\">×</span>\n" +
" </button>\n" +
"</div>"
const buttonContainer = document.createElement('div');
buttonContainer.innerHTML = closeButton;
searchHeader.append(buttonContainer);
or just simply
let searchHeader = document.querySelector(".block-amu-search-form__title");
let closeButton = "<div class=\"callout\" data-closable>\n" +
" <button class=\"close-button\" aria-label=\"Close alert\" type=\"button\" data-close>\n" +
" <span aria-hidden=\"true\">×</span>\n" +
" </button>\n" +
"</div>"
searchHeader.innerHTML = searchHeader.innerHTML + closeButton;