gpt4 book ai didi

javascript - 如何修复未定义的数组

转载 作者:行者123 更新时间:2023-11-30 19:24:00 26 4
gpt4 key购买 nike

我是 javascript 的新手,所以非常感谢任何帮助。我正在尝试从用户那里收集 2 个相关输入并将数组对象显示为表格。但是,当提交输入时,数组显示为未定义。我不确定我哪里出错了。有什么建议吗?

我尝试了不同的方法来收集表单中的输入,但似乎都没有用。

 <!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Example:</title>
<script type="text/javascript">

var flights = [];

function add(ele) {
flights.push(number, miles);
render();
document.getElementById("number").value = "";
document.getElementById("miles").value = "";
}
function render() {

document.getElementById("mydiv").innerHTML = "";
thelisthtml = "";
for(i = 0; i< flights.length; i++)
thelisthtml += "<div class='card' id="+ i +"><div class='card-body'>";
thelisthtml += "Flight " + (i+1) + " : " + flights[i] + " " + "<button type='submit' onclick = 'clearToDo(this)' id="+ i +">Remove From List</button>";

document.getElementById("mydiv").innerHTML = thelisthtml;
}

function calculateStatus(){

var totalMiles = Number(document.getElementById("totalMiles").value);

if (miles < 9999){
tr = document.getElementById("table").rows[1];
tr.style.backgroundColor = "yellow";
}

if (miles >= 10000 && miles <= 24999){
tr = document.getElementById("table").rows[2];
tr.style.backgroundColor = "yellow";
}

if (miles >= 25000){
tr = document.getElementById("table").rows[3];
tr.style.backgroundColor = "yellow";
}
}

function refreshPage() {
window.location.reload();
}

</script>

</head>
<body>

<br>
<table id="table" border ="1">
<tr>
<th>Medallion Status</th>
<th>Level</th>
</tr>
<tr>
<td>Bronze</td>
<td> < 10000 miles</td>
</tr>
<tr>
<td>Silver</td>
<td> < 25000 miles</td>
</tr>
<tr>
<td>Gold</td>
<td> > 25000</td>
</tr>
</table>

<h1><strong>Traveler Information </strong></h1><br> <br>
Flight Number: <input type="text" id="number" name="number" value="" />
<br> <br>
Miles Flown: <input type="text" id="miles" name="miles" value=""/> <br>
<br>
<input type="submit" value="Add Flight" id="go" onclick="add(this)"/>
<p>----------------------------</p>
<table>
<thead>
<tr>
<th>Flight</th>
<th>Miles</th>
</tr>
<thead>
<tbody>
<tr class="col-md-6" id="mydiv"></tr>
</tbody>
</table>
<input type="reset" id="reset" name="Reset" value="Reset"
onclick="refreshPage()" /> <br> <br> <br>
<br> <br>

</body>
</html>

预期的结果是当用户输入信息时数组将显示在表格中。实际结果是数组未定义。

最佳答案

有几个问题,但关于如何修复 flights 的问题的答案包含 undefined 的数组是改变

function add(ele) {  
flights.push(number, miles);
render();
document.getElementById("number").value = "";
document.getElementById("miles").value = "";
}

function add() {
const numberElem = document.getElementById("number");
const milesElem = document.getElementById("miles");
flights.push(numberElem.value, milesElem.value);
render();
numberElem.value = "";
milesElem.value = "";
}

在你原来的add您正在推送的功能 numbermilesflights 上数组但numbermiles是 undefined variable ,所以你推 undefinedundefinedflights 上数组。


为了同时解决其他问题,我建议更换您的 addrender具有以下功能

function add() {
const numberElem = document.getElementById("number");
const milesElem = document.getElementById("miles");
flights.push({
number: numberElem.value,
miles: milesElem.value});
render();
numberElem.value = "";
milesElem.value = "";
}

function render() {
const tbody = document.querySelector('#outputTable tbody');
tbody.innerHTML = flights.map((flight, i) => {
return ''
+ '<tr>'
+ '<td>'
+ flight.number
+ '</td>'
+ '<td>'
+ flight.miles
+ '</td>'
+ '<td>'
+ `<button type='button' onclick="clearToDo(${i})">`
+ 'Remove From List'
+ '</button>'
+ '</td>'
+ '</tr>';
}).join('');
}

并更改您的第二个 <table><table id="outputTable"> .

关于javascript - 如何修复未定义的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57120387/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com