if 语句 - 我的第一个 IF 不起作用,但我的 else if 和 else 部分可以工作 javascript
if statement - My first IF doesn't work, but my else if and else parts work javascript
我遇到了问题。我的第一个 IF 语句不起作用,但我的 ELSE IF 和 ELSE 语句确实有效,我不知道为什么。
(function(){
var dateHeure = new Date().getHours();
var dateHeure = dateHeure.toString();
var $p = document.querySelectorAll('.change')[0];
console.log($texte);
if (dateHeure >= "6" && dateHeure < "11"){
$texte = "Good morning";
}
else if (dateHeure >= "11" && dateHeure < "14"){
$texte = "Enjoy your meal";
}
else if (dateHeure >= "14" && dateHeure < "18"){
$texte = "Good afternoon";
}
else if (dateHeure >= "18" && dateHeure < "22"){
$texte = "Good evening";
}
else {
$texte = "Good night";
}
$p.innerHTML=$texte + ", World";
})();
编辑:
这是非常适合我的代码。我确实像你们都说的那样,我不再把时间变成字符串,现在没关系了:
(function(){
var dateHeure = new Date().getHours();
var dateHeure = dateHeure.toString();
var $p = document.querySelectorAll('.change')[0];
var $texte = "";
if (dateHeure >= 6 && dateHeure < 11){
$texte = "Good morning";
}
else if (dateHeure >= 11 && dateHeure < 14){
$texte = "Enjoy your meal";
}
else if (dateHeure >= 14 && dateHeure < 18){
$texte = "Good afternoon";
}
else if (dateHeure >= 18 && dateHeure < 22){
$texte = "Good evening";
}
else {
$texte = "Good night";
}
$p.innerHTML=$texte + ", World";
})();
虽然你已经知道,问题是什么,
如果您需要数字进行比较,为什么要将数字转换为字符串?
我建议使用另一种比较,而不重复某些部分。
您从一个非常小的值(6 点钟之前)开始比较,然后向上到一天结束。您现在只需要检查较小的检查。不需要更大或相等的检查。
(function () {
var dateHeure = new Date().getHours(),
texte;
if (dateHeure < 6) {
texte = "Good night";
} else if (dateHeure < 11) {
texte = "Good morning";
} else if (dateHeure < 14) {
texte = "Enjoy your meal";
} else if (dateHeure < 18) {
texte = "Good afternoon";
} else if (dateHeure < 22) {
texte = "Good evening";
} else {
texte = "Good night";
}
console.log(texte + ", World");
})();
您使用的是字符串而不是数字。考虑如果值"7"
,则"7" > "6"
为真,但"7" < "11"
为假,因为字符串是逐个字符比较的。
只需删除行var dateHeure = dateHeure.toString();
并更改所有比较以使用数字,然后代码应该按预期工作。
问题是您将整数转换为字符串,然后尝试根据范围检查该字符串,但在这种情况下没有可以比较的范围。
执行一系列字符串的唯一方法是将字符串存储在数组或类似数组中,然后将当前字符串(您的时间)与每个条目进行比较。但是,我建议不要这样做,因为这似乎是获得所需内容的漫长方式。
我想你的其他 if 只能在非常特定的条件下工作,例如当前时间为"11",但如果当前时间为"6",这将适用于 if 语句。但是 else 会起作用,因为它是在所有 if 语句都失败的情况下执行的(在大多数情况下都是这样)。但是,如果您希望它工作,我建议您像这样使用它:
(function(){
var dateHeure = new Date().getHours();
var $p = document.querySelectorAll('.change')[0];
console.log($texte);
if (dateHeure >= 6 && dateHeure < 11){
$texte = "Good morning";
}
else if (dateHeure >= 11 && dateHeure < 14){
$texte = "Enjoy your meal";
}
else if (dateHeure >= 14 && dateHeure < 18){
$texte = "Good afternoon";
}
else if (dateHeure >= 18 && dateHeure < 22){
$texte = "Good evening";
}
else {
$texte = "Good night";
}
$p.innerHTML=$texte + ", World";
})();
在这里,我像您一样从日期开始获取小时数,但没有将其转换为字符串,而是将其与整数值范围(例如大于或等于 6 且小于 11)进行比较。
您正在对要作为数字进行比较的值执行字符串比较。这是一个等待发生的事故(正如你所发现的)。
Date.getHours() 给你一个整数值,应该这样用于你的目标,这非常有效:
<p class="change"></p>
<script>
var $texte;
(function(){
var dateHeure = new Date().getHours();
//dateHeure = 10; // for testing
//dateHeure = dateHeure.toString(); // don't !
var $p = document.querySelectorAll('.change')[0];
console.log($texte);
if ( dateHeure < 6
|| dateHeure >=22) { $texte = "Good night"; }
else if (dateHeure < 11) { $texte = "Good morning"; }
else if (dateHeure < 14) { $texte = "Enjoy your meal"; }
else if (dateHeure < 18) { $texte = "Good afternoon"; }
else { $texte = "Good evening"; }
$p.innerHTML=$texte + ", World";
})();
</script>
- 可以't让我的if语句处理js中的html表单输入
- 使用我的if语句更精确
- 我的if条件的执行
- 我的if和else-if逻辑中的问题以及两个函数的冲突
- 为什么不'我的if/else语句不能正常工作
- '其他'在我的if/else语句中,从来没有发生过——有人能解释为什么吗
- 为什么我的 IF 无法正常工作
- 为什么我的 if 语句出现语法错误
- 我的 if/else 语句有什么问题
- 我的“if”语句中包含中断的错误(wrox ch 3 练习 4)
- Ajax 调用忽略我的 if 语句
- 这很难简明扼要地说.但是我的 if/else javascript 有问题.“如果”在“其他”发生之后不会发生
- JavaScript: else 语句在 for.in 循环中破坏了我的 if 语句
- 为什么我的 if 语句仅在我的输入具有值时才有效
- 我的 IF 语句不正确吗?
- 纸牌游戏无法让我的输赢 Div 出现在我的 IF 语句中
- 为什么我的 if-else 在 javascript 中无法正常工作
- 任何人看到我的If有问题
- 我的 IF 条件如何影响全局变量使函数循环
- 为什么我的“if(result!==”false“)”返回true