2012-09-18 61 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 ";