4

我有一个简单的功能,应该提示用户输入公司名称,然后是一个确认消息框,询问用户“你今天想订购一个网页设计包吗?” 问题在于我的“if”和“else if”语句。当用户单击“确定”时,“if”语句应显示警告框“感谢您的订单”;和一个“else if”语句,当用户单击“取消”时,应该显示一个警告框“我们感谢您的时间”。该函数由 onClick 脚本调用。出现提示和确认框,但我无法弄清楚为什么我的 if 和 else if 框没有出现。我错过了什么?任何帮助表示赞赏。谢谢。

<SCRIPT language = "Javascript">

function submitOrder() {

var companyName = prompt("Please enter company name.", "")

var willOrderPackage = confirm("Would you like to order a Web Design package today?")

if (willOrderPackage == "true") {
   alert("Thank you for your order.")

}else if{
   alert("We appreciate your time.")
}
</SCRIPT>
4

5 回答 5

14

实际上有两种不同的 if..else 结构。第一个是一个简单的 if-else:

if ( condition ) {
   // Do stuff if condition is true
} else {
   // Do stuff if condition is not true
}

接下来是 if-else-if:

if ( condition ) {
   // Do stuff if condition is true
} else if ( differentCondition ) {
   // Do stuff if differentCondition is true
} else {
   // Do stuff if neither condition nor differentCondition is true
}

您还可以根据需要多次使用 else-if,例如:

if ( condition ) {
   // Do stuff
} else if ( condition2 ) {
   // etc
} else if ( condition3 ) {
   // etc
} else if ( condition4 ) {
   // etc
} else {
   // etc
}

if..else 的每一部分都是可选的,除了最初的 if 块。所以如果你不想做任何事情如果condition不是真的,你可以完全省略 else 块:

if ( condition ) {
   // do stuff if condition is true
}

高温高压

暂时超越您的问题,在您的 if 语句的条件中评估的表达式有点摇摆不定。

willOrderPackage 将始终是trueor false,但重要的是要注意trueand "true"or falseand"false"是不同的。第一个是布尔值,第二个是字符串。

所以,你的 if 语句应该问:

if ( willOrderPackage == true ) {

甚至更好的是,当您在 if 语句中评估表达式时== true,它的末尾有一个不可见的隐含。例如:

if ( willOrderPackage == true ) {

将被解释为:

if ( (willOrderPackage == true) == true )

这样做的好处是您实际上可以== true从代码中省略整个部分,因此您可以编写:

if ( willOrderPackage ) {

实际上,您仍在说“如果 willOrderPackage 为真”

希望这有助于为您澄清一些事情!

于 2012-09-05T23:39:03.570 回答
7

else if没有条件,使用else

就像声明的那样

if (willOrderPackage == "true") {
alert("Thank you for your order.")

错了: willOrderPackage 是一个布尔值,所以它可以是

(willOrderPackage == true)

甚至更好

(willOrderPackage)
于 2012-09-05T23:26:19.243 回答
2

最好使用:

if (willOrderPackage) {

代替 :

if (willOrderPackage == "true") {
于 2012-09-05T23:26:53.570 回答
1

改成:

if (willOrderPackage) {
   alert("Thank you for your order.")

}else{
   alert("We appreciate your time.")
}
于 2012-09-05T23:28:09.860 回答
0

这是正确完成的方式:

<script type="text/javascript">

function submitOrder() {
    var companyName = prompt("Please enter company name.", "");
    var willOrderPackage = confirm("Would you like to order a Web Design package today?");

    if (willOrderPackage) {
        alert("Thank you for your order.");
    }else{
        alert("We appreciate your time.");
    }
}

</script>

我做的事情:

  • 现代化的编码风格
  • 切换到类型属性而不是语言
  • 在每个结束行添加分号
  • 删除了多余的if关键字
  • 添加了一个原本缺少的右大括号
  • 删除了与字符串 true 的比较,与布尔值的比较不需要这个
于 2012-09-05T23:34:07.627 回答