2017-12-21 17 views
0

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(クローン形式)が1つの選択要素に対して空の値を持っていることを確認しましたが、フォーム(元の形式)にあります。何故ですか?

ここで何か問題がありますか?

答えて

0

フォームの選択内容は、フォームのDOM要素ではなくブラウザに保存されるため、クローンを作成すると選択内容はコピーされません。 JavaScriptを使用してすべてのフォーム要素で '選択された'小道具を管理する場合や、選択を別の変数に保存して後で再適用する場合は、選択内容をコピーすることができます。

+0

選択値がフォームに含まれていないと言っていますか?それは意味をなさない。また、検査時に、フォーム内のselect要素の値を見ることができます。これを私に説明してもらえますか?どんな例ですか?感謝。 – Shaonline

関連する問題