否则如果javascript

Tra*_*son 4 javascript if-statement

我有一个简单的函数,它应该提示用户输入公司名称,然后是一个确认消息框,询问用户"你想今天订购一个Web设计包吗?" 问题出在我的'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>
Run Code Online (Sandbox Code Playgroud)

jam*_*inc 14

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

if ( condition ) {
   // Do stuff if condition is true
} else {
   // Do stuff if condition is not true
}
Run Code Online (Sandbox Code Playgroud)

接下来是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
}
Run Code Online (Sandbox Code Playgroud)

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

if ( condition ) {
   // Do stuff
} else if ( condition2 ) {
   // etc
} else if ( condition3 ) {
   // etc
} else if ( condition4 ) {
   // etc
} else {
   // etc
}
Run Code Online (Sandbox Code Playgroud)

if..else的每个部分都是可选的,除了初始的if块.因此,如果您不想做任何事情,如果condition不是真的,您可以完全省略else块:

if ( condition ) {
   // do stuff if condition is true
}
Run Code Online (Sandbox Code Playgroud)

HTH

超越你的问题片刻,在你的if语句中评估的表达式有点不稳定.

willOrderPackage永远是truefalse,但要注意,它是重要的true"true"false"false"是不同的.第一个是布尔值,第二个是字符串.

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

if ( willOrderPackage == true ) {
Run Code Online (Sandbox Code Playgroud)

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

if ( willOrderPackage == true ) {
Run Code Online (Sandbox Code Playgroud)

将被解释为:

if ( (willOrderPackage == true) == true )
Run Code Online (Sandbox Code Playgroud)

这样做的好处是你实际上可以省略== true代码中的所有内容,所以你可以写:

if ( willOrderPackage ) {
Run Code Online (Sandbox Code Playgroud)

实际上,你仍然会说"如果willOrderPackage是真的"

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


mrm*_*ryb 7

else if没有条件,使用else

就像声明的那样

if (willOrderPackage == "true") {
alert("Thank you for your order.")
Run Code Online (Sandbox Code Playgroud)

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

(willOrderPackage == true)
Run Code Online (Sandbox Code Playgroud)

甚至更好

(willOrderPackage)
Run Code Online (Sandbox Code Playgroud)

  • `willOrderPackage`也是一个布尔值,所以它不应该与`"true"`进行比较. (4认同)