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