JavaScript - cloneNode给出不同的结果

时间:2017-12-21 16:45:10

标签: javascript forms clone clonenode

我正在尝试使用cloneNode在JavaScript中的submition之前克隆表单。原始表单具有所选值的答案,但不具有克隆的值。以下是代码。

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

我在这里做错了吗?

1 个答案:

答案 0 :(得分:0)

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