// https://stackoverflow.com/questions/494143/creating-a-new-dom-element-from-an-html-string-using-built-in-dom-methods-or-pro function deserialize_html(html) { let template = document.createElement('template'); template.innerHTML = html; return template.content.children; // use .children instead of childNodes to avoid #text elements : // https://stackoverflow.com/questions/35199729/javascript-meaning-of-text-in-htmlnode-childnodesi-nodename //return template.content.childNodes; } function fill_content(new_content, old_content, target_name) { // new_content : //
// // old_content : //
//
// target_name :
// banner
if (!old_content)
return;
let elements_with_class = find_elements_by_class(new_content, "content_html");
// elements_with_class :
//
//
let elements_to_fill = find_elements_by_data(elements_with_class, target_name, "path_target");
// elements_to_fill :
elements_to_fill.forEach(el => el.outerHTML = old_content);
}
function find_elements_by_class(html_collection, class_to_find) {
// html_collection :
//
//
// class_to_find :
// content_html
for (element of html_collection) {
if (element.nodeName === "STYLE")
continue;
if (element.nodeName === "SCRIPT")
continue;
return element.getElementsByClassName(class_to_find);
}
return null;
}
function find_elements_by_data(html_collection, data_to_compare, dataset_name) {
// html_collection :
//
//
// data_to_compare :
// banner
// dataset_name :
// path_target
let matching_elements = [];
if (!data_to_compare)
return matching_elements;
for (element of html_collection) {
let data = [...element.querySelectorAll(`[data-${dataset_name}='${data_to_compare}']`)];
//let data = element.dataset[dataset_name];
//if (data_to_compare === data)
matching_elements.push(...data);
}
// if (data_to_compare === "banner")
return matching_elements;
}
function transfert_class(element, new_content) {
// element :
// ////
////
////
//
let new_content = deserialize_html(content_to_load);
// new_content :
//
//
let target_name = element_to_replace.dataset.path_target;
// target_name :
// banner
transfert_class(element_to_replace, new_content);
// element_to_replace :
// ////