【问题标题】:JavaScript - cloneNode gives different result [duplicate]JavaScript - cloneNode 给出不同的结果[重复]
【发布时间】:2018-06-04 09:17:43
【问题描述】:

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

我在这里做错了吗?

【问题讨论】:

    标签: javascript forms clone clonenode


    【解决方案1】:

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

    【讨论】:

    • 您是说选择的值不在表格中吗?但这没有意义。此外,经过检查,我可以在表单中看到选择元素的值。你能给我解释一下吗?有什么例子吗?赞赏。
    猜你喜欢
    • 2017-03-23
    • 2021-12-28
    • 1970-01-01
    • 1970-01-01
    • 2018-08-30
    • 2020-03-19
    • 1970-01-01
    • 2013-11-05
    • 2014-02-23
    相关资源
    最近更新 更多