我有两个按钮,每个按钮将一个数组添加到数组orderArray中。这可以正常工作,并且该数组显示为html表。输出表时,还将创建一个按钮。此按钮的目的是删除与其关联的数组,从而从表中删除一行。
这可以正常工作,但是用.splice删除数组的一部分后,就不可能再向数组中添加更多内容,而只是抛出“无法读取属性长度”。
您可以在控制台中看到已拼接阵列,并且长度值正确,但错误仍然存在。我显然没有在这里得到任何东西,因为我认为当循环调用myArray.length时,每次都会得到正确的长度。
这是js:
var orderArray = [];
var orderNumber = 0;
var theOrder = [];
var total = 0;
function orderUpdate(item,price){
theOrder = [item, price];
orderArray[orderNumber] = theOrder;
orderNumber++;
}
function makeTable(myArray) {
var result = "<table border=2 id=orderTable>";
console.log(myArray.length);
for(var i = 0; i < myArray.length; i++) {
result += "<tr id='row" + i + "'>";
for(var j = 0; j < myArray[i].length; j++){
result += "<td>" + myArray[i][j] + "</td>";
}
result += "<td><button onclick='removeLine(" + i + ")'>Remove</button></td></tr>";
}
result += "</table>";
console.log(myArray);
return result;
}
$( "#LongB" ).click(function() {
orderUpdate("Long Black", 2.50);
$("#ordered").html(makeTable(orderArray));
});
$( "#FlatW" ).click(function() {
orderUpdate("Flat White", 3.50);
$("#ordered").html(makeTable(orderArray));
});
function removeLine(arrayIndex){
orderArray.splice(arrayIndex, 1);
console.log(orderArray);
$("#ordered").html(makeTable(orderArray));
}
和html:
<html lang="en">
<head>
<meta charset="UTF-8">
<title>JSPOS</title>
<script src="http://code.jquery.com/jquery-2.1.4.js"></script>
</head>
<body>
<button id="LongB">Long Black</button>
<button id="FlatW">Flat White</button>
<h3>Ordered:</h3>
<div id="ordered"></div>
<script src="js/stuff.js"></script>
</body>
</html>
并且在这里是十分硬朗。
尝试替换orderArray.push(theOrder);
为orderArray[orderNumber] = theOrder;
function orderUpdate(item,price){
theOrder = [item, price];
orderArray.push(theOrder);
// orderNumber++;
}
jsfiddle https://jsfiddle.net/purnrntr/2/
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句