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 для управления "выбранной" реквизитом для всех элементов формы, или вы можете сохранить выборки в отдельной переменной и применить их позже.

Другие вопросы по тегам