0

我正在尝试使用 cloneNode 在 JavaScript 中提交之前克隆表单。原始表格有一个选定值的答案,但没有克隆的答案。以下是代码。

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(克隆形式)对于一个选择元素具有空值,但它存在于形式(原始形式)中。这是为什么?

我在这里做错了吗?

4

1 回答 1

0

表单的选择保存在浏览器中,而不是表单的 DOM 元素中,因此当您克隆它时,选择不会被复制。如果您使用 JavaScript 管理所有表单元素上的 'selected' 属性,则可以复制选择,或者您可以将选择存储在单独的变量中并稍后重新应用它们。

于 2017-12-21T17:26:05.537 回答