Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/467.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从switch语句中输出所需的成本_Javascript - Fatal编程技术网

Javascript 如何从switch语句中输出所需的成本

Javascript 如何从switch语句中输出所需的成本,javascript,Javascript,我不确定我做错了什么。它说我的变量没有定义,但我是在js文件的顶部定义的。我认为我所有的逻辑都是正确的,但有些地方不对劲,我还没弄明白是什么。我只是在这里添加了更多的文本,这样我就可以用更新的代码编辑这个问题了。根据需要删除最后一位。谢谢 function calculate() { document.getElementById("cost").innerHTML = "Cost: " var cost = Number(document.getElementById("ty

我不确定我做错了什么。它说我的变量没有定义,但我是在js文件的顶部定义的。我认为我所有的逻辑都是正确的,但有些地方不对劲,我还没弄明白是什么。我只是在这里添加了更多的文本,这样我就可以用更新的代码编辑这个问题了。根据需要删除最后一位。谢谢

function calculate() {
    document.getElementById("cost").innerHTML = "Cost: "

    var cost = Number(document.getElementById("type").value);
    var years = Number(document.getElementById("years").value);
      if (years > 1) {
        var discount = cost * 0.20
        cost -= discount ; // 20%
        document.getElementById("cost").innerHTML += cost;
      } else {
        document.getElementById("cost").innerHTML += cost;
      }
    return false;
  }

我做了两个更改,它运行时没有错误:

var cost = parseInt(document.getElementById("cost).value);
应该有另一个“后成本”,并且:

if (type && type.value && years && (years > 0)) {
应为年。值>0

然后将开关切换到:

switch (type.value) {
而有关个案则包括:

case 'basic':
case 'premium':
等等

函数计算(){
//严格要求:
"严格使用",;
//用于存储总成本的变量:
风险价值成本;
//获取对表单元素的引用:
var type=document.getElementById('type');
var years=document.getElementById('years');
//TODO将年份转换为数字:
//检查有效数据:
if(type&&type.value&&years&&years.value>0)){
//TODO添加开关语句以使用“type”值确定基本成本
开关(类型值){
案例“基本”:
window.console.log(“基本-$10.00”);
打破
“保险费”一案:
window.console.log(“特优-$15.00”);
打破
“黄金”一案:
window.console.log(“黄金-$20.00”);
打破
“白金”一案:
window.console.log(“白金-$25.00”);
}
//TODO更新成本以考虑年数:
var cost=parseInt(document.getElementById(“cost”).value);
//多年折扣:
如果(年数>1){
成本-=(成本*20);//20%
}
//TODO将“costElement”的value属性更新为计算成本
var costElement=document.getElementById('cost');
}否则{//显示错误:
document.getElementById('cost')。value='请输入有效值';
}
//返回false以防止提交:
返回false;
}
函数init(){
"严格使用",;
//提交表单时调用名为calculate()的函数
document.getElementById('theForm')。onsubmit=calculate;
}
window.onload=init;

58123301
创建您的会员资格
类型
基本-10.00美元
保费-$15.00
黄金-20.00美元
白金-25.00美元
年
成本

我编写了您的代码并修复了一些问题,希望这能帮助您:

函数计算(){
document.getElementById(“成本”).innerHTML=“成本:”
var成本=编号(document.getElementById(“type”).value);
var years=数字(document.getElementById(“years”).value);
如果(年数>1){
风险价值折扣=成本*0.20
成本-=折扣;//20%
document.getElementById(“成本”).innerHTML+=成本;
}否则{
document.getElementById(“成本”).innerHTML+=成本;
}
返回false;
}

创建您的会员资格
类型
基本-10.00美元
保费-$15.00
黄金-20.00美元
白金-25.00美元
年

成本:


在执行
切换(成本)之前,您从不向
成本分配任何内容
。它应该将其值与html类型选项值中列出的成本进行比较。什么是
type.basic
type.premium
,等等?
type
是一个DOM元素,它没有这些属性。我想你要做的是
切换(type.value)
case”basic“:
案例“premium”:
等。应该是
var cost=parseInt(document.getElementById(“cost”).value)
cost*20
应该是
cost*0.20
这不会正确地将输出输入到成本文本字段,如果超过一年,也不会计算20%的折扣。@RachelWillows,如果你不介意的话,请您描述清楚您的要求,我很乐意为您提供帮助:)
年值的目的是什么?@ShayaUlman“填写此表格以计算您的会员资格。如果您注册超过一年,可享受20%的折扣”。费用必须反映在html页面的禁用文本字段中。这是否有帮助?例如,
Basic-$10.00的20%折扣?然后你必须将价格存储在变量中,我无法得到你的答案。您介意提供一个运行的代码片段吗?是的,没问题-我复制了您的代码并进行了上述更改。“无法得到你的答案”-发生了什么事?啊,我明白了。我需要在禁用“成本”输入字段而不是日志中显示成本。此外,如果所选类型输入的时间超过一年,则假定为20%的折扣。还在努力。