JavaScript - cloneNode дает другой результат
Я пытаюсь клонировать форму перед отправкой в JavaScript с помощью cloneNode. Исходная форма имеет ответ для выбранного значения, но не клонированный. Ниже приведен код.
encodeHTMLCollectionToBase64(document.forms['formen']).submit();
function encodeHTMLCollectionToBase64(form) {
encryptedForm = form.cloneNode(true)
Array.from(encryptedForm).forEach(function(item) {
if (item.childElementCount > 0) {
for(var i=0;i < item.childElementCount;i++) {
item[i].value = btoa(encodeURIComponent(item[i].value));
}
}
else {
item.value = btoa(encodeURIComponent(item.value));
}
});
encryptedForm.style.visibility = 'hidden';
document.body.appendChild(encryptedForm);
return encryptedForm ;
}
После проверки я обнаружил, что encryptedForm (клонированная форма) имеет пустое значение для одного элемента select, но оно есть в форме (оригинальная форма). Это почему?
Я делаю что-то здесь не так?
1 ответ
Выборы формы сохраняются в браузере, а не в элементах DOM формы, поэтому при клонировании выборки не будут скопированы. Можно скопировать выборки, если вы используете JavaScript для управления "выбранной" реквизитом для всех элементов формы, или вы можете сохранить выборки в отдельной переменной и применить их позже.