2012-09-18 60 views
1

innerHTML不適用於此JavaScript代碼。innerHTML不起作用

var date = new Date(); 
var time = date.getHours(); 
var morning = document.p.getElementById("greeting").innerHTML="Good Morning "; 
var afternoon = document.write = "Good Afternoon "; 
var evening = document.write = "Good evening"; 

if (time < 12){ 
    morning} 
else if (time < 18){ 
afternoon} 
else {evening}; 

的HTML代碼是

<p id="greeting"> </p> 

我試圖讓代碼閱讀「早上好」或「下午」的基礎上的時間。 JavaScript位於外部文件中。它與document.write一起工作,但在外部文件中,問候出現在頁面的頂部。

+0

爲什麼在一個地方使用'innerHTML'而在另一個地方使用'document.write'? –

+0

爲什麼'evening = document.write =「晚上好」;'你是否指定了'document.write'方法?請記住'document.write'清除整個文檔! –

+0

謝謝我沒有這個 –

回答

2
var afternoon = document.write = "Good afternoon"; 

這裏做的事情是引入了一個名爲afternoon變量,同時設置它財產writedocument,這在以前是一個函數調用,以字符串"Good afternoon"

在代碼的稍後階段,您只需編寫afternoon,它訪問該變量,但不對其執行任何操作。

它看起來像你想要做這樣的事情:

var morning = function() { document.getElementById("greeting").innerHTML="Good Morning "; }; 
var afternoon = function() { document.getElementById("greeting").innerHTML="Good Afternoon "; }; 
var evening = function() { document.getElementById("greeting").innerHTML="Good evening"; }; 

if (time < 12) { 
    morning(); 
} else if (time < 18) { 
    afternoon(); 
} else { 
    evening(); 
}; 

也就是說,上述將是最接近你的代碼,這是有些正確的。我仍然會說有一些改進的餘地。像下面的內容會更有意義對我說:

var morning = 'Good Morning '; 
var afternoon = 'Good Afternoon '; 
var evening = 'Good evening'; 

if(time < 12) { 
    document.getElementById("greeting").innerHTML = morning; 
} else if (time < 18) { 
    document.getElementById("greeting").innerHTML = afternoon; 
} else { 
    document.getElementById("greeting").innerHTML = evening; 
} 

更重要的是,你很可能決定你首先要使用的消息,然後分配給它,它會給你少的地方,如果你改變你的代碼想要更改輸出問候語的位置,例如:

var messages = { 
    morning: 'Good Morning ', 
    afternoon: 'Good Afternoon ', 
    evening: 'Good evening' 
}; 

var greeting = time < 12 
    ? messages.morning 
    : time < 18 
     ? messages.afternoon 
     : messages.evening; 

document.getElementById('greeting').innerHTML = greeting; 
+0

今天早上我一直在嘗試allsorts。我試過你的解決方案,但沒有奏效。 –

+0

@AdrianMcGuinness:[在此工作](http://jsfiddle.net/p6xfB/)。你遇到什麼問題? –

+0

它沒有出現在我的瀏覽器 –

3
document.p.getElementById("greeting") 

應該

document.getElementById("greeting") 
+0

這應該可能是一個評論,因爲解釋導致這個問題的錯誤觀念並沒有很長的路要走。 –

1

嘗試更換此

var morning = document.p.getElementById("greeting").innerHTML="Good Morning "; 

var morning = document.getElementById("greeting").innerHTML="Good Morning "; 
+0

謝謝,我在document.p.getElementById和document.write中看到了我的錯誤,謝謝 –

1

document.p.getElementById

01取出

正確的:

document.getElementById("greeting").innerHTML="Good Morning ";