我是JavaScript的新手。所以,我试图解决一个练习 - 宣布电影放映时间。我已经检查了它的错误,但我一无所获。当我打开index.html文件时没有任何反应。这是我的代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Cinema</title>
<script src="cinema.js"></script>
</head>
<body>
</body>
</html>
cinema.js
var movie1={
name: "Star Wars: Force Awakens",
showtimes: ["3:00pm","7:00pm","11:00pm"],
genre: "Cult Classic",
rating: 2
};
var movie2={
name: "Doctor Strange",
showtimes: ["5:00pm","9:00pm"],
genre: "Action",
rating: 5
};
window.onload = function (){
var nextShowing=getNextShowing(movie1);
alert(nextShowing);
nextShowing=getNextShowing(movie2);
alert(nextShowing);
}
function getNextShowing(movie){
var now=new Date().getTime();
for(var i=0;i<movie.showtimes.length;i++){
var showtime = getTimeFromString(movie.showtimes[i]);
if((showtime-now)>0) {
return "Next showing of "+movie.name+" is "+movie.showtimes[i];
}
}
return null;
}
function getTimeFromString(timeString){
var theTime = new Date();
var time = timeString.match(/(\d+)(?::(\d\d))?\s*(p?) /);
theTime.setHours( parselnt(time[1]) +(time[3] ? 12 : 0) );
theTime.setMinutes( parseInt(time[2])|| 0 );
return theTime.getTime();
}
哪里可能有问题?
UPD:
function getNextShowing(movie){
var now=new Date().getTime();
for(var i=0;i<movie.showtimes.length;i++){
var showtime = getTimeFromString(movie.showtimes[i]);
if((showtime-now)>0) {
return "Next showing of "+movie.name+" is "+movie.showtimes[i];
}
}
return null;
}
function getTimeFromString(timeString){
var theTime = new Date();
var time = timeString.match(/(\d+)(?::(\d\d))?\s*(p?) /);
theTime.setHours( parseInt(time[1])+(time[3] ?12 : 0) );
theTime.setMinutes(parseInt(time[2])|| 0 );
return theTime.getTime();
}
仍然没有发生
答案 0 :(得分:1)
parselnt
替换为parseInt
匹配模式不正确。这是更新的
var time = timeString.match(/(\d+)(?::)(\d+)(am|pm)/);
答案 1 :(得分:0)
你的parseInt拼写错误(你把它写成了parselnt)。
当您继续学习Javascript时,您调试的第一个调用端口之一应该是打开浏览器的开发人员工具/控制台。
例如,在Google Chrome中,您可以按Ctrl + Shift + i。
执行此操作控制台应该提供有关您的javascript遇到的任何运行时错误的详细信息,这将是您诊断问题的第一步。
答案 2 :(得分:0)
我可以在这里看到拼写错误theTime.setHours( parselnt(time[1]) +(time[3] ? 12 : 0) );
它应该是parseInt
。