Javascript 为什么我的构造函数不能在UI中工作?

Javascript 为什么我的构造函数不能在UI中工作?,javascript,jquery,function,object,constructor,Javascript,Jquery,Function,Object,Constructor,我希望这个问题的框架是正确的,但我无法理解为什么我的代码不能正常工作 我已经用Javascript中的对象和构造函数制作了一个简单的比萨饼订购应用程序。我已经创建了我的Pizza对象,它存储各种配料,还创建了一个构造函数,其中包含了一些条件,这些条件可以根据所选的尺寸更改Pizza的价格 所有这一切似乎都正常,但当我尝试将新的Pizza构造器放入UI时,当用户点击submit时,计算出的价格将不会显示。我在谷歌上搜索了好几个小时,试着看辅导视频。不知道我在这里错过了什么 如果有人能帮忙,那就太好

我希望这个问题的框架是正确的,但我无法理解为什么我的代码不能正常工作

我已经用Javascript中的对象和构造函数制作了一个简单的比萨饼订购应用程序。我已经创建了我的Pizza对象,它存储各种配料,还创建了一个构造函数,其中包含了一些条件,这些条件可以根据所选的尺寸更改Pizza的价格

所有这一切似乎都正常,但当我尝试将新的Pizza构造器放入UI时,当用户点击submit时,计算出的价格将不会显示。我在谷歌上搜索了好几个小时,试着看辅导视频。不知道我在这里错过了什么

如果有人能帮忙,那就太好了。我是javascript新手,在这方面有不少困难。多谢各位

这是我的脚本页面:

function Pizza(veggie, meat, cheese, sauce, size) {
  this.veggie = veggie;
  this.meat = meat;
  this.cheese = cheese;
  this.sauce = sauce;
  this.size = size;
  this.pizzaPrice = 0;
  this.amount = amount;
}

Pizza.prototype.pizzaCost = function () {
  if (this.size === "small") {
    this.pizzaPrice === 10.00
  } else if (this.size == "Medium") {
    this.pizzaPrice == 12.00
  } else if (this.size == "Large") {
    this.pizzaPrice === 13.00
  } else if (this.size === "Mega") {
    this.pizzaPrice === 14.50
    return Pizza.prototype.pizzaCost(); 
}

//UI//

$(document).ready(function () {
  $("#formOne").submit(function (event) {
    event.preventDefault();
    const veggie = $("select#veggies").val();
    const meat = $("select#meat'").val();
    const cheese = $("select#cheese").val();
    const sauce = $("select#sauce").val();
    const size = $("select#size").val();

//Here is where I am having no luck... the ID tags match in the html so I know that isn't the issue either

    let newPizza = new Pizza (veggie + meat + cheese + sauce + size + Pizza.prototype.pizzaCost())
    $("#result").append("<text>" + "$" + newPizza + "</text>");
  })})}

您的代码中有几个问题:

更正大括号语法。当前jQuery document.ready处理程序位于pizzaCost函数内。 在pizzaCost函数中,您需要: 将return语句移到if语句之外 返回一个值,而不仅仅是设置类的属性 更正错误使用==和===来设置值。这些运算符仅用于比较。 修复调用构造函数的语法。您似乎正在使用+运算符来分隔参数。应该是这样。 从构造函数调用中删除pizzaCost参数。您没有在构造函数本身中定义它。 该元素用于SVG图形。它与此HTML无关,应该删除。 使用文本而不是附加,以避免重复提交表单时重复内容。 更正所有这些后,代码的工作方式如下:

功能比萨蔬菜、肉、奶酪、酱汁、大小{ this.veggie=veggie; 这个。肉=肉; 这个。奶酪=奶酪; 这个。沙司=沙司; 这个。大小=大小; 这个价格是0; } Pizza.prototype.pizzaCost=函数{ 如果此值为0.size==小{ 这个价格是10.00美元 }否则,如果this.size==中等{ 这个价格是12.00美元 }否则,如果this.size==大{ 这个。比萨饼价格=13.00 }否则,如果this.size==Mega{ 这个。比萨饼价格=14.50 } 退回这个。比萨饼价格; } jQuery$=>{ $formOne。关于“提交”,函数E{ e、 防止违约; const veggie=$selectvegies.val; const meat=$selectmeat.val; const cheese=$selectcheese.val; const sauce=$selectsauce.val; const size=$selectsize.val; 让新比萨=新比萨蔬菜、肉、奶酪、酱汁、大小; $result.text$+newPizza.pizzaCost; } } 番茄 意大利 辣味 香肠 莫泽雷勒干酪 番茄糊 小的 中等的 大的 巨大的 提交
哇,好的,我明白了。非常感谢。我唯一进一步的问题是,我从未见过用jQuery$=>代替$document.ready。有什么区别?谢谢您的帮助。没有区别,jQuery$=>{}只是使用ES6语法-没问题,很乐意帮助: