在 appendChild() 中根据当前时间显示问候语
display greeting according to current time in appendChild()
我在 div 中创建了一个 h3,现在正尝试显示适合当前时间的问候语。它在游戏中显示为 h3,但只会导致未定义。
谁能告诉我我遗漏了什么或做错了什么导致工时无法计算?
var h3 = document.createElement("h3");
var d = new Date();
var hour = d.getHours();
var greeting;
function greetCustomer() {
if (hour > 18) {
greeting = "Good Evening";
}
else if (hour > 12) {
greeting = "Good Afternoon";
}
else if (hour > 5) {
greeting = "Good Morning";
}
else {
greeting = "Welcome Night Owl";
}
document.getElementById("greeting").appendChild(h3);
}
h3.innerHTML = greetCustomer();
<div id="greeting"></div>
你没有从你的函数中返回任何东西;这将解决您的问题。
换句话说,您应该使用 textContent
而不是 innerHTML
。你应该在 greetCustomer()
函数之外附加 h3
。
function greetCustomer() {
var d = new Date();
var hour = d.getHours();
var greeting;
if (hour > 18) {
greeting = "Good Evening";
} else if (hour > 12) {
greeting = "Good Afternoon";
} else if (hour > 5) {
greeting = "Good Morning";
} else {
greeting = "Welcome Night Owl";
}
return greeting;
}
var h3 = document.createElement("h3");
h3.textContent = greetCustomer();
document.querySelector('#greeting').appendChild(h3);
<div id="greeting"></div>
您需要 return 来自函数的问候语字符串。
您不需要将 H3 附加到 greetCustomer()
中的 DOM,这应该在函数外部完成。并且所有与时间相关的变量都应该是函数的局部变量,因为每次使用函数时都需要重新计算它们。
var h3 = document.createElement("h3");
document.getElementById("greeting").appendChild(h3);
h3.innerHTML = greetCustomer();
function greetCustomer() {
var d = new Date();
var hour = d.getHours();
var greeting;
if (hour > 18) {
greeting = "Good Evening";
} else if (hour > 12) {
greeting = "Good Afternoon";
} else if (hour > 5) {
greeting = "Good Morning";
} else {
greeting = "Welcome Night Owl";
}
return greeting;
}
<div id="greeting"></div>
我在 div 中创建了一个 h3,现在正尝试显示适合当前时间的问候语。它在游戏中显示为 h3,但只会导致未定义。
谁能告诉我我遗漏了什么或做错了什么导致工时无法计算?
var h3 = document.createElement("h3");
var d = new Date();
var hour = d.getHours();
var greeting;
function greetCustomer() {
if (hour > 18) {
greeting = "Good Evening";
}
else if (hour > 12) {
greeting = "Good Afternoon";
}
else if (hour > 5) {
greeting = "Good Morning";
}
else {
greeting = "Welcome Night Owl";
}
document.getElementById("greeting").appendChild(h3);
}
h3.innerHTML = greetCustomer();
<div id="greeting"></div>
你没有从你的函数中返回任何东西;这将解决您的问题。
换句话说,您应该使用 textContent
而不是 innerHTML
。你应该在 greetCustomer()
函数之外附加 h3
。
function greetCustomer() {
var d = new Date();
var hour = d.getHours();
var greeting;
if (hour > 18) {
greeting = "Good Evening";
} else if (hour > 12) {
greeting = "Good Afternoon";
} else if (hour > 5) {
greeting = "Good Morning";
} else {
greeting = "Welcome Night Owl";
}
return greeting;
}
var h3 = document.createElement("h3");
h3.textContent = greetCustomer();
document.querySelector('#greeting').appendChild(h3);
<div id="greeting"></div>
您需要 return 来自函数的问候语字符串。
您不需要将 H3 附加到 greetCustomer()
中的 DOM,这应该在函数外部完成。并且所有与时间相关的变量都应该是函数的局部变量,因为每次使用函数时都需要重新计算它们。
var h3 = document.createElement("h3");
document.getElementById("greeting").appendChild(h3);
h3.innerHTML = greetCustomer();
function greetCustomer() {
var d = new Date();
var hour = d.getHours();
var greeting;
if (hour > 18) {
greeting = "Good Evening";
} else if (hour > 12) {
greeting = "Good Afternoon";
} else if (hour > 5) {
greeting = "Good Morning";
} else {
greeting = "Welcome Night Owl";
}
return greeting;
}
<div id="greeting"></div>