--- id: 5ddb965c65d27e1512d44dde title: Part 71 challengeType: 0 --- ## Description <section id='description'> To remove the items `foodInputs` array, we will iterate through them by using the `forEach()` function. Add `foodInputs.forEach()`. </section> ## Instructions <section id='instructions'> </section> ## Tests <section id='tests'> ```yml tests: - text: See description above for instructions. testString: assert( code.replace(/\s/g, '').match(/foodInputs.forEach\(\)/) ) ``` </section> ## Challenge Seed <section id='challengeSeed'> <div id='html-seed'> ```html <script> document.getElementById('calorie-form').onsubmit = calculate; function calculate(e) { e.preventDefault(); clearOutput(); const total = Array.from(document.getElementsByClassName('cal-control')) .map(meal => Number(meal.value)) .reduce((accumulator, currentValue) => accumulator + currentValue, 0); const maxCalories = document.getElementById('female').checked ? 2000 : 2500; const difference = total - maxCalories; const surplusOrDeficit = difference > 0 ? 'Surplus' : 'Deficit'; const output = document.getElementById('output'); const result = document.createElement('h3'); result.className = 'green-text'; const resultText = document.createTextNode( `${Math.abs(difference)} Calorie ${surplusOrDeficit}` ); result.appendChild(resultText); output.appendChild(result); const line = document.createElement('hr'); output.appendChild(line); const recommended = document.createElement('h4'); const recommendedText = document.createTextNode( `${maxCalories} Recommended Calories` ); recommended.appendChild(recommendedText); output.appendChild(recommended); const consumed = document.createElement('h4'); consumed.innerHTML = `${total} Consumed Calories`; output.appendChild(consumed); output.setAttribute('class', 'bordered-class'); output.style.backgroundColor = '#FFF9C4'; } document.getElementById('add').onclick = function() { const foodInput = document.createElement('input'); foodInput.placeholder = 'food name'; foodInput.classList.add('food-control'); document.getElementById('entries').appendChild(foodInput); const calorieInput = document.createElement('input'); calorieInput.setAttribute('type', 'number'); calorieInput.setAttribute('min', '0'); calorieInput.classList.add('cal-control'); calorieInput.classList.add('extra-cal-control'); document.getElementById('entries').appendChild(calorieInput); }; document.getElementById('clear').onclick = function() { clearOutput(); clearForm(); }; const clearOutput = () => { document.getElementById('output').innerHTML = ''; document.getElementById('output').classList.remove('bordered-class'); }; const clearForm = () => { const foodInputs = Array.from( document.getElementsByClassName('food-control') ); }; </script> ``` </div> ### Before Test <div id='html-setup'> ```html <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <meta name="description" content="" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> <link rel="stylesheet" href="styles.css" /> </head> <body> <div class="container"> <form id="calorie-form"> <h2 class="center">Calorie Counter</h2> <div class="grid"> <legend>Sex</legend> <div> <input type="radio" name="sex" id="female" value="F" checked /> <label for="female"> Female (2,000 calories) </label> <div> <input type="radio" name="sex" id="male" value="M" /> <label for="male"> Male (2,500 calories) </label> </div> </div> </div> <div class="grid" id="entries"> Breakfast <input type="number" min="0" class="cal-control" id="breakfast" /><br /> Lunch <input type="number" min="0" class="cal-control" id="lunch" /><br /> Dinner <input type="number" min="0" class="cal-control" id="dinner" /> </div> <button type="button" class="btn-add" id="add"> Add Entry </button> <button type="submit" class="btn-solid" id="calculate"> Calculate </button> <button type="button" class="btn-outline" id="clear"> Clear </button> </form> <div id="output"></div> </div> </body> </html> ``` </div> ### After Test <div id='html-teardown'> ```html </body> </html> ``` </div> </section> ## Solution <section id='solution'> ```html <script> document.getElementById('calorie-form').onsubmit = calculate; function calculate(e) { e.preventDefault(); clearOutput(); const total = Array.from(document.getElementsByClassName('cal-control')) .map(meal => Number(meal.value)) .reduce((accumulator, currentValue) => accumulator + currentValue, 0); const maxCalories = document.getElementById('female').checked ? 2000 : 2500; const difference = total - maxCalories; const surplusOrDeficit = difference > 0 ? 'Surplus' : 'Deficit'; const output = document.getElementById('output'); const result = document.createElement('h3'); result.className = 'green-text'; const resultText = document.createTextNode( `${Math.abs(difference)} Calorie ${surplusOrDeficit}` ); result.appendChild(resultText); output.appendChild(result); const line = document.createElement('hr'); output.appendChild(line); const recommended = document.createElement('h4'); const recommendedText = document.createTextNode( `${maxCalories} Recommended Calories` ); recommended.appendChild(recommendedText); output.appendChild(recommended); const consumed = document.createElement('h4'); consumed.innerHTML = `${total} Consumed Calories`; output.appendChild(consumed); output.setAttribute('class', 'bordered-class'); output.style.backgroundColor = '#FFF9C4'; } document.getElementById('add').onclick = function() { const foodInput = document.createElement('input'); foodInput.placeholder = 'food name'; foodInput.classList.add('food-control'); document.getElementById('entries').appendChild(foodInput); const calorieInput = document.createElement('input'); calorieInput.setAttribute('type', 'number'); calorieInput.setAttribute('min', '0'); calorieInput.classList.add('cal-control'); calorieInput.classList.add('extra-cal-control'); document.getElementById('entries').appendChild(calorieInput); }; document.getElementById('clear').onclick = function() { clearOutput(); clearForm(); }; const clearOutput = () => { document.getElementById('output').innerHTML = ''; document.getElementById('output').classList.remove('bordered-class'); }; const clearForm = () => { const foodInputs = Array.from( document.getElementsByClassName('food-control') ); foodInputs.forEach(); }; </script> ``` </section>