Как перебрать formData для цикла for? - PullRequest
0 голосов
/ 09 декабря 2018

Это просто, что я хочу итерировать formData с помощью js.
Пример для итерации объекта formData, расположенного здесь.
для итерации formData в msdn
Я создаю свой способ итерациив соответствии с примером кода.

 
function show()
{
    var formData = new FormData( document.querySelector("#myForm") );
    for(var pair in formData.entries())
    {
        console.log(pair[0]);
        console.log(pair[1]);
    }
} 
ob = document.getElementById("submit");
ob.addEventListener("click",show); 

 
 
<form id="myForm">
<input type="text" name="name">
<input type="text" name="addr">
<input type="button" value="submit" id="submit">
</form>
 

Чтобы ввести test1 на первом входе и test2 на втором входе, затем нажмите кнопку submit.

ожидаемый вывод в консоли chorme

name
test1
addr
test2

Фактический вывод в консоли chrome.

n
e

Как исправить мой код для итерации formData с циклом for?

1 Ответ

0 голосов
/ 09 декабря 2018

Вы видите n, e, потому что метод entires() возвращает итеративный объект с методом next, а вы перебираете этот объект с помощью цикла for/in, который предназначен для итерации свойств(ключи) объекта.Поскольку вы зацикливаете правильное число раз для данных формы (2), цикл for/in выполняет итерацию по имени ключа (next) в виде строки дважды в этом объекте.

console.log(new FormData().entries());

Вместо этого используйте цикл for/of, как показано в документации, который будет повторяться с использованием объекта итератора, возвращенного из вызова метода entries().

function show(){
    console.clear();

    var formData = new FormData(document.querySelector("#myForm"));
    
    for(var pair of formData.entries()){
        console.log(pair[0], pair[1]);
    }
    
    event.preventDefault();    
} 
document.getElementById("submit").addEventListener("click", show);
<form id="myForm">
<input type="text" name="name">
<input type="text" name="addr">
<input type="button" value="submit" id="submit">
</form>
...