#javascript #html
#javascript #HTML
Вопрос:
Я работаю над своим первым приложением JS, и у меня возникают проблемы с получением пользовательского ввода, добавлением его к локальному объекту внутри функции, вводом его в глобальную функцию при событии click и печатью в разделе HTML. Я получаю undefined в моем console.log. Я предполагаю, что это как-то связано с исходным массивом локальных объектов, извлекающим значения пользовательского ввода в качестве значений объекта, но я не уверен, что я делаю неправильно. Любая помощь будет оценена.
let expensesNew = [];
const addExpense = (ev) => {
let expense = [{
name: document.querySelector("[name=expense_Name]").value,
amount: document.querySelector("[name=expense_Value]").value
}]
expensesNew.push(expense);
for (let i = 0; i < expense.length; i ) {
console.log(expensesNew.name);
console.log(expensesNew.amount);
}
console.warn('added', {
expensesNew
});
document.querySelector('#title_Expenses').innerHTML = expensesNew[i].name;
document.querySelector('#value_Expenses').innerHTML = expensesNew[i].amount;
let message = `You've just added ${expensesNew.name} for ${expensesNew.amount}.`;
console.log(message);
}
<body>
<h1>Budget Application</h1>
<div id="inputSections" class="inputSections">
<section id="incomingMoney">
<h3>Please Enter Your Budget</h3>
<input type="number" id="incomingCashInput" class="inputs" name="incoming_Cash_Input"><br>
<button id="incomingCalcButton">Calculate</button>
</section>
<section id="enterExpenses">
<h3>Please Enter Your Expense</h3>
<input type="text" id="expenseName" class="inputs" name="expense_Name">
<h3>Please Enter Expense Amount</h3>
<input type="number" id="expenseAmount" class="inputs" name="expense_Value"><br>
<button id="expenseButton">Add Expense</button>
</section>
</div>
<section id="calculations" class="calcs">
<div class="budget calcs">
<h3>Budget</h3><br>
<img src="money_icon.png" class="moneyIcon calcIcon"><br>
<section id="budgetIncoming">
</section>
</div>
<div class="expenses calcs">
<h3>Expenses</h3><br>
<img src="expense_icon.png" class="expenseIcon calcIcon"><br>
<section id="expenseIncoming">
</section>
</div>
<div class="balance calcs">
<h3>Balance</h3><br><br>
<img src="budget_icon.png" class="budgetIcon calcIcon"><br>
<section id="balanceIncoming">
</section>
</div>
</section>
<section id="expenses expContainer">
<div class="expContainer">
<h4>Expense Title</h4>
<section class="titleExpenses expContainer" id="title_Expenses">
</section>
</div>
<div class="expContainer">
<h4>Expense Value</h4><br><br>
<section class="valueExpenses" id="value_Expenses">
</section>
</div>
<div class="expContainer">
<h4>Edit</h4>
<section class="deleteExpenses">
</section>
</div>
</section>
</body>
Комментарии:
1. На данный момент ничто в вашем примере не вызывает
addExpense
функцию. Если возможно, пожалуйста, убедитесь, что код в вопросе воспроизводит проблему.2. Вы получаете
undefined
, потому что у вас нет доступа к индексуexpensesNew
в вашем цикле, и вы также вкладываете все новые расходы в их собственный массив. Вам нужно будет позвонитьconsole.log(expensesNew[i][0].name);
.3. @DBS моя ошибка, я забыл поместить это туда. « пусть outgoingCalcButton = document.getElementById(‘expenseButton’); expenseButton.addEventListener(«click», addExpense); «
4. @pilchard Я подумал, что проще всего вложить их в объект и перенести их в основной глобальный объект (поскольку мне нужно будет использовать этот объект при расчетах бюджета позже в другой функции) для записи в мой HTML. Разве это не так?