2017-12-21 35 views
0

cloneNode를 사용하여 JavaScript에서 제출하기 전에 양식을 복제하려고합니다. 원본 양식에는 선택한 값에 대한 대답이 있지만 복제 된 값에 대한 대답은 없습니다. 다음은 코드입니다.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 (복제 형태) 하나 개의 선택 요소에 대한 빈 값을 가지고 있지만 그 형태 (원형)에 있다는 것을 발견했다. 왜 그런가요?

여기에 뭔가 잘못입니까?

답변

0

양식의 선택 항목은 양식의 DOM 요소가 아닌 브라우저에 저장되므로 복제 할 때 선택 항목이 복사되지 않습니다. JavaScript를 사용하여 모든 양식 요소에서 'selected'소품을 관리하거나 선택 항목을 별도의 변수에 저장하고 나중에 다시 적용 할 수있는 경우 선택 사항을 복사 할 수 있습니다.

+0

선택 값이 형식이 아님을 말하고 있습니까? 그러나 그것은 이치에 맞지 않습니다. 또한, 검사시, 폼에서 select 요소의 값을 볼 수 있습니다. 이걸 제게 설명해 주시겠습니까? 어떤 예 또는 무엇인가? 고맙습니다. – Shaonline