警报不处理用户输入

alert does not process user input

本文关键字:用户 输入 处理      更新时间:2023-09-26

我正在研究js中的条件语句。 但是这个脚本遇到了 2 个问题。
1) 无论用户输入如何,脚本都不会处理 else 子句。2)我的警报方法首先打印if警报(),然后打印未定义的alert()。 Idk 为什么会这样。

<script>
function temperature (temp) 
{
var message="";
var temp = 70;
if(temp <= 69) {
    alert(message = "Turn on the heat.");
} else { 
    alert(message = "It is hot enough.");
            } 
}                                         
</script>

那么我的正文脚本是:

<script>
var myTemp=prompt("Please enter your current temperature."); //prompt is ok
//alert fails to process else clause and then prints an undefined alert()  
alert(temperature(myTemp));     
</script>                   

我尝试从函数本身中删除警报。 然而,这扼杀了我的提示。

PS 我将 Sublime 3 与 jshint 一起使用,但这个问题超出了 jshint 的管辖范围,obv。

请指教并感谢大家。

您正在使用 2 个警报:一个在另一个内部......并且还重置了温度值。

使用这个:

function temperature (temp) 
{
  if(temp <= 69) {
     return "Turn on the heat.";
  } else { 
     return "It is hot enough.";
  } 
}

有几件事:

1) 您将变量temp设置为 70,因此它会覆盖您的输入。

2) prompt() 函数返回一个字符串,然后将其传递到温度函数中,在那里您尝试将其与整数进行比较。 使用 parseInt()

3)您也在嵌套警报,因为您将temperature()放入警报中,并且您的temperature()函数本身也会创建警报。 选择一个或另一个。

这就是我改变它的方式。

<script>
function temperature (temp){ 
    var message="";
    var temp = temp || 70;
    if(temp <= 69) {
        message = "Turn on the heat.");
    } else { 
        message = "It is hot enough.");
    } 
return message;
}                                         
</script>

然后:

...
alert(temperature(parseInt(myTemp)));
...