意外的标识符 [object Object]
Unexpected identifier [object Object]
var costBusRoute = 600;
var busRoute = 0;
var vehCountBus = 0;
var routesBus = [{number:0, vehCount:0}];
var maintBus = 50;
function newBusRoute() {
busRoute += 1;
routesBus.push({number:busRoute, vehCount:0});
viewRoutes(routesBus, "busRoutes", busRoute);
}
function newBus(routenum) {
vehCountBus += 1;
routenum.vehCount += 1;
capacity += 50;
bank -= 600;
checkBank();
checkCapacity();
eiv += 99;
checkEIV();
updateVehNum(routenum);
}
function viewRoutes(routelist, listhtml, routenum) {
document.getElementById(listhtml).innerHTML = "";
for (I in routelist) {
nameList = "<li class='list'><button onclick='editRoute("+routelist+","+routelist[routenum]+")'>" + routelist[I].number + "</button></li>";
document.getElementById(listhtml).innerHTML += nameList;
}
}
function editRoute(routelist, routenum) {
$("#mainContainer").fadeOut();
document.getElementById("screen").innerHTML = (
"<h1>Bus Route " + routelist[routenum].number + "</h1>" +
"<div id='vehicleNum'><p>Vehicles on this route: " + routelist[routenum].vehCount + "</div>" +
"<p><button onclick='newBus("+routelist[routenum].number+")'>+ Add Vehicle | £600</button><p>Maintenance: £50 per day" +
"<p><button onclick='delBus("+routelist[routenum].number+")'>- Remove Vehicle</button>" +
"<p><button onclick='delRoute("+routelist[routenum].number+")'>- Delete Route</button>"
);
}
我已经搜索了几个小时,但一直无法弄清楚为什么会引发错误或如何解决它。非常感谢任何建议!
我正在尝试将正确的元素从 routesBus
发送到 editRoute()
,以便它可以编辑该特定元素中的键值。错误发生在 editRoute()
,并在控制台中显示为 Uncaught SyntaxError: Unexpected identifier
。
我认为存在各种问题:
- 如评论中所述,您尝试通过直接连接数组来将数组添加为参数...以及其余参数。
nameList = "<li class='list'><button onclick='editRoute("+routelist+","+routelist[routenum]+")'>" + routelist[I].number + "</button></li>";
你得到的只是像这样的字符串:
<li class='list'><button onclick='editRoute([object Object],[object Object]...
除此之外,editRoute
需要 array
(routelist
) 和 number
(routenum
),数组中项目的索引,当你调用它时,你(试图)给出数组和项目,而不是索引。
在 viewRoutes
中,您在同一行中同时使用作为参数给出的索引 routenum
和索引 I
。这是不一致的。您应该放弃第一个,因为您正在构建整个列表并且 routenum
索引在这里似乎没有用。如果在构建列表时,您想在 I == routenum
时做一些特别的事情(将文本设置为粗体,使用特殊颜色或图标...)。
为了修复 1 和 2,我宁愿使用索引作为你的 editRoute
函数的唯一参数,因为你可以构建 html 调用它更容易,因为参数 routelist
对应于 routesBus
,可从 editRoute
.
获得
var costBusRoute = 600;
var busRoute = 0;
var vehCountBus = 0;
var routesBus = [{number:0, vehCount:0}];
var maintBus = 50;
function newBusRoute() {
busRoute += 1;
routesBus.push({number:busRoute, vehCount:0});
viewRoutes("busRoutes");
}
function newBus(routenum) {
vehCountBus += 1;
routenum.vehCount += 1;
capacity += 50;
bank -= 600;
checkBank();
checkCapacity();
eiv += 99;
checkEIV();
updateVehNum(routenum);
}
function viewRoutes(listhtml) {
let nameList = "";
for (I in routelist) {
nameList += `<li class='list'><button onclick='editRoute(${routenum})'>${routesBus[I].number}</button></li>`;
}
document.getElementById(listhtml).innerHTML = nameList;
}
function editRoute(routenum) {
$("#mainContainer").fadeOut();
let route = routesBus[routenum];
let number = route.number; //isn't always route.number === routenum?
// TODO use template literal for the following
document.getElementById("screen").innerHTML = (
"<h1>Bus Route " + number + "</h1>" +
"<div id='vehicleNum'><p>Vehicles on this route: " + route.vehCount + "</div>" +
"<p><button onclick='newBus("+ number +")'>+ Add Vehicle | £600</button><p>Maintenance: £50 per day" +
"<p><button onclick='delBus("+ number + ")'>- Remove Vehicle</button>" +
"<p><button onclick='delRoute(" + number + ")'>- Delete Route</button>"
);
}
请注意,我在 viewRoutes 上使用了 template literals,您应该尽可能多地使用它。检查我更改的其他地方。
另一件事:因为您正在使用 JQuery,所以您宁愿学习一下它,尤其是 .click()
以及如何使用它附加元素,这将是一个很大的改进。
var costBusRoute = 600;
var busRoute = 0;
var vehCountBus = 0;
var routesBus = [{number:0, vehCount:0}];
var maintBus = 50;
function newBusRoute() {
busRoute += 1;
routesBus.push({number:busRoute, vehCount:0});
viewRoutes(routesBus, "busRoutes", busRoute);
}
function newBus(routenum) {
vehCountBus += 1;
routenum.vehCount += 1;
capacity += 50;
bank -= 600;
checkBank();
checkCapacity();
eiv += 99;
checkEIV();
updateVehNum(routenum);
}
function viewRoutes(routelist, listhtml, routenum) {
document.getElementById(listhtml).innerHTML = "";
for (I in routelist) {
nameList = "<li class='list'><button onclick='editRoute("+routelist+","+routelist[routenum]+")'>" + routelist[I].number + "</button></li>";
document.getElementById(listhtml).innerHTML += nameList;
}
}
function editRoute(routelist, routenum) {
$("#mainContainer").fadeOut();
document.getElementById("screen").innerHTML = (
"<h1>Bus Route " + routelist[routenum].number + "</h1>" +
"<div id='vehicleNum'><p>Vehicles on this route: " + routelist[routenum].vehCount + "</div>" +
"<p><button onclick='newBus("+routelist[routenum].number+")'>+ Add Vehicle | £600</button><p>Maintenance: £50 per day" +
"<p><button onclick='delBus("+routelist[routenum].number+")'>- Remove Vehicle</button>" +
"<p><button onclick='delRoute("+routelist[routenum].number+")'>- Delete Route</button>"
);
}
我已经搜索了几个小时,但一直无法弄清楚为什么会引发错误或如何解决它。非常感谢任何建议!
我正在尝试将正确的元素从 routesBus
发送到 editRoute()
,以便它可以编辑该特定元素中的键值。错误发生在 editRoute()
,并在控制台中显示为 Uncaught SyntaxError: Unexpected identifier
。
我认为存在各种问题:
- 如评论中所述,您尝试通过直接连接数组来将数组添加为参数...以及其余参数。
nameList = "<li class='list'><button onclick='editRoute("+routelist+","+routelist[routenum]+")'>" + routelist[I].number + "</button></li>";
你得到的只是像这样的字符串:
<li class='list'><button onclick='editRoute([object Object],[object Object]...
除此之外,
editRoute
需要array
(routelist
) 和number
(routenum
),数组中项目的索引,当你调用它时,你(试图)给出数组和项目,而不是索引。在
viewRoutes
中,您在同一行中同时使用作为参数给出的索引routenum
和索引I
。这是不一致的。您应该放弃第一个,因为您正在构建整个列表并且routenum
索引在这里似乎没有用。如果在构建列表时,您想在I == routenum
时做一些特别的事情(将文本设置为粗体,使用特殊颜色或图标...)。
为了修复 1 和 2,我宁愿使用索引作为你的 editRoute
函数的唯一参数,因为你可以构建 html 调用它更容易,因为参数 routelist
对应于 routesBus
,可从 editRoute
.
var costBusRoute = 600;
var busRoute = 0;
var vehCountBus = 0;
var routesBus = [{number:0, vehCount:0}];
var maintBus = 50;
function newBusRoute() {
busRoute += 1;
routesBus.push({number:busRoute, vehCount:0});
viewRoutes("busRoutes");
}
function newBus(routenum) {
vehCountBus += 1;
routenum.vehCount += 1;
capacity += 50;
bank -= 600;
checkBank();
checkCapacity();
eiv += 99;
checkEIV();
updateVehNum(routenum);
}
function viewRoutes(listhtml) {
let nameList = "";
for (I in routelist) {
nameList += `<li class='list'><button onclick='editRoute(${routenum})'>${routesBus[I].number}</button></li>`;
}
document.getElementById(listhtml).innerHTML = nameList;
}
function editRoute(routenum) {
$("#mainContainer").fadeOut();
let route = routesBus[routenum];
let number = route.number; //isn't always route.number === routenum?
// TODO use template literal for the following
document.getElementById("screen").innerHTML = (
"<h1>Bus Route " + number + "</h1>" +
"<div id='vehicleNum'><p>Vehicles on this route: " + route.vehCount + "</div>" +
"<p><button onclick='newBus("+ number +")'>+ Add Vehicle | £600</button><p>Maintenance: £50 per day" +
"<p><button onclick='delBus("+ number + ")'>- Remove Vehicle</button>" +
"<p><button onclick='delRoute(" + number + ")'>- Delete Route</button>"
);
}
请注意,我在 viewRoutes 上使用了 template literals,您应该尽可能多地使用它。检查我更改的其他地方。
另一件事:因为您正在使用 JQuery,所以您宁愿学习一下它,尤其是 .click()
以及如何使用它附加元素,这将是一个很大的改进。