对于课堂作业,我们的任务是使用提示符()获取用户输入。我只希望提示接受3个值中的1个。
这是我的代码:
ounce = prompt ( "What size would you like your drink?\n8oz, 12oz, 16oz are the available sizes." );
while ( ounce!= "8oz" || ounce != "12oz" || ounce != "16oz")
{
alert ( "Please select a proper size: 8oz, 12oz, 16oz" );
prompt ( "What size would you like your drink?\n8oz, 12oz, 16oz are the available sizes." );
}
我的意图是,当用户输入除了8盎司,12盎司或16盎司之外的其他任何东西时,它会告诉他们该大小不可用,并且他们会提示他们再次询问他们的大小,直到他们输入其中一个值。但是我现在的代码不起作用。即使我输入8oz它也说不正确并再次询问我的尺寸。我是初级水平课程的初学者,因为你可以告诉所以任何帮助都是值得赞赏的。
答案 0 :(得分:2)
你需要使用AND条件......只有当输入的值不是三个中的一个时才需要进入循环,如果你使用OR那么即使你输入一个有效值,两个比较操作也会转如果你输入8oz
,那么ounce != "12oz"
和ounce != "16oz"
都将为真...因为OR操作将返回任何一个条件的真实结果是的,它将进入循环。
如果您使用AND
条件,则仅当满足所有三个条件时才会执行循环,因此如果您输入有效值12oz
,则条件ounce != "12oz"
将返回false导致整体条件失败,从而退出循环。
ounce = prompt ( "What size would you like your drink?\n8oz, 12oz, 16oz are the available sizes." );
while ( ounce!= "8oz" && ounce != "12oz" && ounce != "16oz")
{
alert ( "Please select a proper size: 8oz, 12oz, 16oz" );
ounce = prompt ( "What size would you like your drink?\n8oz, 12oz, 16oz are the available sizes." );
}
演示:Fiddle
答案 1 :(得分:0)
简单的答案是使用AND而不是OR,但我认为值得解释为什么会这样。
您在此处看到的是De Morgan's theorem的应用程序,其中声明:
!(A && B) === !A || !B
!(A || B) === !A && !B
所以,如果你这样做:
ounce!= "8oz" || ounce != "12oz" || ounce != "16oz"
你说的是:
! ( ounce == "8oz" && ounce == "12oz" && ounce == "16oz" )
这是永远不会的,因为ounce
不能同时是“8oz”,“12oz”和“16oz”。
我认为你想要的是:
! ( ounce == "8oz" || ounce == "12oz" || ounce == "16oz" )
当我们应用De Morgan的转型时,我们得到:
ounce != "8oz" && ounce != "12oz" && ounce != "16oz"
答案 2 :(得分:0)
作为旁注,这是一个完美的情况。
var ounce = undefined;
do {
alert("Please select a proper size: 8oz, 12oz, 16oz");
ounce = prompt("What size would you like your drink?\n8oz, 12oz, 16oz are the available sizes.");
} while ( ounce != "8oz" && ounce != "12oz" && ounce != "16oz");