Javascript 使用innerHTML设置段落的值无效

Javascript 使用innerHTML设置段落的值无效,javascript,Javascript,innerHTML在此JavaScript代码中不起作用 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 e

innerHTML在此JavaScript代码中不起作用

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,但在外部文件中,问候语显示在页面顶部

在这里,我试图根据一天中的时间设置“问候语”的

document.p.getElementById("greeting")
应该是

document.getElementById("greeting")
应该是

document.getElementById("greeting")
试着换掉这个

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

试着换掉这个

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

删除p。来自document.p.getElementById

正确的一点:

删除p。来自document.p.getElementById

正确的一点:

这样做的目的是引入一个名为午后的变量,并将它和属性write-on-document(以前是函数调用)设置为字符串Good-午后

在代码的后期,您只需编写午后,它访问变量,但不处理它

看起来您希望执行以下操作:

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;
这样做的目的是引入一个名为午后的变量,并将它和属性write-on-document(以前是函数调用)设置为字符串Good-午后

在代码的后期,您只需编写午后,它访问变量,但不处理它

看起来您希望执行以下操作:

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;

这可能应该是一个评论,因为这并不能很好地解释导致这个问题的误解。这可能应该是一个评论,因为这对于解释导致这个问题的误解来说并没有太大的帮助。为什么在一个地方使用innerHTML,在另一个地方使用document.write?为什么晚上=document.write=晚上好;是否正在分配给document.write方法?记住那个文档。write清除整个文档!此后,我获得了重要的JavaScript知识。在一个语句中使用两个不相邻的=是没有意义的。为什么在一个地方使用innerHTML,在另一个地方使用document.write?为什么晚上=document.write=晚上好;是否正在分配给document.write方法?记住那个文档。write清除整个文档!此后,我获得了重要的JavaScript知识。使用两个不相邻的=in-one语句没有意义。谢谢,我在document.p.getElementById和document.write Thanks中看到了我的错误。谢谢,我在document.p.getElementById和document.write Thanks中看到了我的错误。我今天早上一直在尝试各种方法。我尝试了你的解决方案,但没有成功。@AdrianMcGuiness:。你遇到了什么问题?它没有出现在我的browser@AdrianMcGuinness:那可能是什么浏览器?应该在webkit浏览器和使用chrome的IEim中工作,我看到你使用了JSFIDLE。我在用它,它很有用。今天早上我一直在尝试各种方法。我尝试了你的解决方案,但没有成功。@AdrianMcGuiness:。你遇到了什么问题?它没有出现在我的browser@AdrianMcGuinness:那可能是什么浏览器?应该在webkit浏览器和使用chrome的IEim中工作,我看到你使用了JSFIDLE。我在使用它,它是有用的同意,我正在寻找带有'getelementbyid'的元素,在前面添加一个p并不会使它变得更容易。这与元素有关。同意,我正在寻找带有“getelementbyid”的元素,在前面添加一个p并不会使它更容易。这与元素有关。