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 ;
}

При проверке я обнаружил, что зашифрованная форма (клонированная форма) имеет пустое значение для одного элемента выбора, но оно есть в форме (исходная форма). Почему это?

Я делаю что-то не так здесь?


person Shaonline    schedule 21.12.2017    source источник


Ответы (1)


Выбор формы сохраняется в браузере, а не в элементах DOM формы, поэтому при клонировании выборки не будут скопированы. Можно скопировать выборки, если вы используете JavaScript для управления параметром «выбрано» во всех элементах формы, или вы можете сохранить выборки в отдельной переменной и повторно применить их позже.

person Murad Khan    schedule 21.12.2017
comment
Вы говорите, что выбранные значения не находятся в форме? но это не имеет смысла. Кроме того, после проверки я вижу значение для выбранного элемента в форме. Не могли бы вы объяснить это мне? любой пример или что-то? оценил. - person Shaonline; 22.12.2017