【问题标题】:How do I compare the prompt response to my variable?如何将即时响应与我的变量进行比较?
【发布时间】:2018-01-05 19:39:28
【问题描述】:

用户应该在提示框中输入几个给定名称之一。如果他们的响应不是给定的名称之一,他们会被告知这不是一个有效的响应。但是,如果他们这样做了,那么他们就会被告知他们选择了谁。问题是,无论我输入什么,它总是说这是一个无效的名称。任何建议如何解决这个问题?

 <html>
<body bgcolor = "firebrick">
    <title>Dinner Plans</title>
    <center><h1><b> Dinner Plans</h1>
        <p> Guests to Pick From:</p></b>
        <p> Jane, Lisa, Taylor, Chris, Alyssa, Will and Jessica </p>
       <button onclick="Invites()">Click To Invite</button>
  <div id = "Coming"></div>
<script>
function Invites() {
var txt;
var person = prompt("Who is Coming For Dinner?", "Enter Names Here");
if (person == null || person != guest) {
    txt = "Not A Valid Guest.";
} 
else {
    txt = "Your Invited Guests Are:" + person;
}
document.getElementById("Coming").innerHTML = txt;
}

function guest ( slices , toppings ) {
  this.numSlices = slices;
  this.numToppings = toppings; 
}
var Jane = new guest( 2, "Mushroom", "Onions", "Peppers", "Olives");
var Lisa = new guest(3, "Pepperoni", "Ham", "Pineapple");
var Taylor = new guest(3, "Extra Cheese", "Pepperoni", "Sausage", "Bacon");
var Chris = new guest(2, "Mushroom", "Sausage", "Bacon", "Ham", "Onion", "Peppers");
var Alyssa = new guest(1, " Pepperoni", "Bacon");
var Will = new guest(2, "Extra Cheese", "Sausage", "Bacon", "Onion", "Peppers", "Olives");
var Jessica = new guest(2, "Pepperoni", "Bacon", "Ham", "Pineapple", "Onion", "Peppers");

if (Invites == null || Invites == "") {
    txt = " You invited zero guests, you have a pizza all to yourself!";
} else { 
    txt = " You Invited:" + Invites; 
}

        </script>

【问题讨论】:

  • 你的客人是什么? person != guest as guest 不是一个值,它不起作用
  • 你还没有声明guest变量
  • guest 的第二个参数可能应该是一个浇头数组,现在它只是查看您发送的第一个浇头。如果你console.log(Jane.numToppings)你会得到“蘑菇”。
  • 也只是把它扔在那里,你可以使用一个下拉列表来列出你的客人。
  • guest 已声明。这是一个函数。

标签: javascript function variables if-statement prompt


【解决方案1】:

<script>
function Invites() {
    var txt;
    var guestArray = [
        "Jane",
        "Lisa",
        "Taylor",
        "Chris",
        "Alyssa",
        "Will",
        "Jessica"
    ];

    var person = prompt("Who is Coming For Dinner?", "Enter Names Here");
    if (person == null || guestArray.indexOf(person) === -1) {
        txt = "Not A Valid Guest.";
    } 
    else {
        txt = "Your Invited Guests Are:" + person;
    }

    document.getElementById("Coming").innerHTML = txt;
}

function guest ( slices , toppings ) {
    this.numSlices = slices;
    this.numToppings = toppings; 
}

var Jane = new guest( 2, "Mushroom", "Onions", "Peppers", "Olives");
var Lisa = new guest(3, "Pepperoni", "Ham", "Pineapple");
var Taylor = new guest(3, "Extra Cheese", "Pepperoni", "Sausage", "Bacon");
var Chris = new guest(2, "Mushroom", "Sausage", "Bacon", "Ham", "Onion", "Peppers");
var Alyssa = new guest(1, " Pepperoni", "Bacon");
var Will = new guest(2, "Extra Cheese", "Sausage", "Bacon", "Onion", "Peppers", "Olives");
var Jessica = new guest(2, "Pepperoni", "Bacon", "Ham", "Pineapple", "Onion", "Peppers");

if (Invites == null || Invites == "") {
    txt = " You invited zero guests, you have a pizza all to yourself!";
} else { 
    txt = " You Invited:" + Invites; 
}

</script>


<title>Dinner Plans</title>
<center><h1><b> Dinner Plans</h1>
<p> Guests to Pick From:</p></b>
<p> Jane, Lisa, Taylor, Chris, Alyssa, Will and Jessica </p>
<button onclick="Invites()">Click To Invite</button>
<div id = "Coming"></div>
因此,您的代码存在以下问题:
  • guest 是构造函数。不是您的价值(客人姓名) 期待。

  • 要比较提示中填写的名称,需要有效的列表 名字。

  • 为此,您可以使用名称数组(此处为guestArray)。

  • 我使用了 indexOf 函数,该函数在 Array 实例中可用 javascript。当没有找到匹配项时返回 -1 如果匹配存在,则元素的数组或索引。

【讨论】:

  • 您的回答很有帮助,但我必须指出一些改进方法。 guest 已声明 - 它是一个函数。此外,您可能想解释您对代码所做的其他更改(即var guestArrayguestArray.indexOf(person) === -1)。根据提问者对编程的了解程度,描述为什么使用您的方法比提问者的方法有所改进可能很有启发性。
  • 非常感谢,既然您已经解释过了,我就知道我哪里出错了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-10-20
  • 1970-01-01
  • 2018-02-28
  • 1970-01-01
  • 2018-06-18
  • 2017-10-26
  • 1970-01-01
相关资源
最近更新 更多