Насколько я понимаю, ответ @Michal - это , уязвимый для XXS-атак (использование innerHTML - уязвимость безопасности) Вот еще одна ссылка на это.
Есть много способов сделать это, тот, который я нашел и любил, это :
function wrap_single(el, wrapper) {
el.parentNode.insertBefore(wrapper, el);
wrapper.appendChild(el);
}
let divWrapper;
let elementToWrap;
elementToWrap = document.querySelector('selector');
// wrapping the event form in a row
divWrapper = document.createElement('div');
divWrapper.className = 'row';
wrap_single(elementToWrap, divWrapper);
Это хорошо работает. Однако для меня я иногда хочу просто обернуть части элемента. Поэтому я модифицировал функцию следующим образом:
function wrap_some_children(el, wrapper, counter) {
el.parentNode.insertBefore(wrapper, el);
if ( ! counter ) {
counter = el.childNodes.length;
}
for(i = 0; i < counter; i++) {
wrapper.appendChild( el.childNodes[0] );
}
}
// wrapping parts of the event form into columns
let divCol1;
let divCol2;
// the elements to wrap
elementToWrap = document.querySelector('selector');
// creating elements to wrap with
divCol1 = document.createElement('div');
divCol1.className = 'col-sm-6';
divCol2 = document.createElement('div');
divCol2.className = 'col-sm-6';
// for the first column
wrap_some_children(elementToWrap, divCol1, 13); // only wraps the first 13 child nodes
// for the second column
wrap_some_children(elementToWrap, divCol2);
Надеюсь, это поможет.
Вы можете просто использовать SHIFT kbd> / CTRL kbd> при выборе элементов в открывшемся диалоге: