iT邦幫忙

0

問一下這段javascript程式碼輸出如何顯示呢?

匿名 4 年前2111 瀏覽
<!doctype html>
<html lang="en">
	
		<title>Movielist</title>
		<meta charset="utf-8">
		<script>
		window.onload=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.title+" 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;
}

var movie1=
{
	title:"Plan 9 from Outer Space",
	genre:"Cult Classic",
	rating:5,
	showtimes:["3:00pm","7:00pm","11:00pm"]
};

var movie2=
{
	title:"Forbidden Planet",
	genre:"Classic Sci-fi",
	rating:5,
	showtimes:["5:00pm","9:00pm"]
};


var nextShowing = getNextShowing(movie1);
alert(nextShowing);
nextShowing = getNextShowing(movie2);
alert(nextShowing);

		</script>
	
	
	

這段主要是把movie1及movie2的目前時間可選擇的影片並把播放時間顯示出來
問一下我想顯示出目前可以觀看影片的時間,不過輸出2個都是null,是哪邊判斷有問題呢??

1 個回答

14
wiseguy
iT邦超人 1 級 ‧ 4 年前
最佳解答

第 28 行,少了小括號
return theTime.getTime();

wordsmith iT邦高手 1 級 ‧ 4 年前 檢舉

除了 theTime.getTime()的問題之外

第7行

<pre class="c" name="code">window.onload=function getNextShowing(movie) 

也不太合理,當onlonad事件發生的時候,事實上48~51行已經執行過了,所以會發生

getNextShowing is not defined

的錯誤,這也會造成你的script跑不出結果。

其實不綁onload,你的程式反而正確,但我想應該是真正完整的程式和dom有關,所以你必須要等dom load完,如果是這樣,反而是把48~51放入一個initd的funciton中,然後去綁onload事件。

http://jsfiddle.net/T2mXV/ 可參考這裡的修改過的,另外getNextShowing的return方式我有調整一下,應該比return null好

wiseguy iT邦超人 1 級 ‧ 4 年前 檢舉

wordsmith 說的沒錯。所以

  1. 把第 7 行的 window.onload= 移到第 47 行,並改成 **window.onload=function(){**。
  2. 再在 52 行補一個 }; 就好了。

我要發表回答

立即登入回答