2012-09-05 108 views
4

我有一个简单的功能,应该提示用户输入公司名称,然后是一个确认消息框,询问用户“您想今天订购一个网页设计软件包吗?”问题在于我的'if'和'else if'语句。当用户点击'OK'时,'if'语句应该显示一个警告框'Thank you for your order';和'else if'语句,当用户点击'取消'时应该显示一个警告框“我们感谢你的时间”。该函数由onClick脚本调用。出现提示和确认框,但我不明白为什么我的if和else if框不出现。我错过了什么?任何帮助表示赞赏。谢谢。其他如果javascript

<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> 
+0

'if(thisPartIsAlwaysNeeded)..';但也许只是使用'else' *而不使用“if”? – 2012-09-05 23:27:42

+4

是你没有使用分号? –

+7

不想粗鲁,但你真的应该学习如何编写代码。首先,这个javascript看起来像是在90年代写的(大写标签名称,大写的语言名称,没有结尾的分号等)。其次,将布尔值与字符串'true'进行比较清楚地表明缺乏对基本原理的理解。事实上,你放弃了第二个if语句的条件,这更加强制执行。 – Christian

回答

7

else if有没有条件,使用else

如说

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

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

(willOrderPackage == true) 

甚至更​​好

(willOrderPackage) 
+2

非常感谢! –

+4

'willOrderPackage'也是一个布尔值,所以它不应该与'“true”相比较。 – jfriend00

+0

'if attack =“true”launchNukes()' –

2

也最好是使用:的

if (willOrderPackage) { 

代替:

if (willOrderPackage == "true") { 
+2

@pst,但这也是一个改变。 – jfriend00

+0

@ jfriend00我完全同意。我没有阅读这篇文章作为“评论”帖子。 – 2012-09-05 23:29:39

1

更改为:

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

}else{ 
    alert("We appreciate your time.") 
} 
+1

+1 - 你有两个建议修复。 – jfriend00

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,与布尔值比较不需要此
+2

这不是它正确完成的方式。你为什么说'if(willOrderPackage ==“true”)'?首先,在进行严格比较时,您应该使用'==='运算符。另外,没有必要,因为你只是查看'if(willOrderPackage)'。 – jeremy

+1

没有理由添加分号。 – 2012-09-05 23:36:24

+0

我看到你编辑过。谢谢 – jeremy

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 
} 

您还可以使用别的,如果多次,只要你喜欢,如:

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 
} 

HTH

超越你的问题了一会儿,表达的被评估你的陈述条件有点脆弱。

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

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

if (willOrderPackage == true) { 

甚至比这更好的,当你在一个if语句计算表达式,有一个在它的一端是不可见的一个隐含== true。例如:

if (willOrderPackage == true) { 

会被解释为:

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

这样做的好处是,你实际上可以从你的代码省略了整个== true位,所以你可以这样写:

if (willOrderPackage) { 

而实际上你仍然在说“if willOrderPackage is true”

H这有助于为你清理一些事情!