在javascript中使用switch case做循环



//每次输入错误名称时,需要在总数上加1。例如,如果我输入" "在提示符中,它会把总转向加1,如果我输入"w",它会加到"雨刷"。循环应该运行,直到我输入一个null或零值,并计算总错误。

<html>
<head><title>Charge Calculator</title></head>
<body>
<script type="text/javascript">


//Declaring Variables
var day;
var data="";
var steering = 0;
var turbo =0;
var wiper =0;
day = prompt("Enter day: ","");
var BR="<br/>";



do
{
data = prompt("Enter Data: ","");
data = input.nextLine();
switch(data)
{
case 'S':
steering++;
break;      
case 'T':
turbo++;
break;
case 'W':
wiper++;
break;      
}

}
while(data == "")   
document.write("day: " +day +BR); //Display destination name
document.write("Steering issue: " +steering +BR);
document.write("turbo Issue: " +turbo +BR);
document.write("wiper Issue: " +wiper +BR);

</script>
</body>

</html>

您的代码中有许多需要改进的地方。注意,write()表达式可能会破坏基于html的页面的某些部分。了解DOM操作命令。

下面的代码片段以非常简短的方式演示了如何收集输入。我使用你的prompt()方法只是为了表明它可以做到,但我总是更喜欢一个简单的input字段。

const counts={s:0,t:0,w:0};
while (++counts[prompt("Please enter the error type code (s,t or w):").toLowerCase()]) {}
console.log("steering: "+counts.s+
"nturbo: "+counts.t+
"nwipers: "+counts.w);

一切都发生在计算while条件结果的表达式中:输入值被转换为小写,然后对象counts的属性将被增加。这只会起作用(=返回一个" true "对于已经初始化的属性,如s,tw。对于所有其他情况,不能计算增量,从而导致"nan";("不是数字")结果。这将结束while循环。

似乎递归是更合适的解决方案。虽然@Cartsten的那张看起来也很不错。

function count() {
const counts = {
s: 0,
t: 0,
w: 0
};
const checkCounts = () => {
let input = prompt(
'Please enter the error type code (s,t or w):'
).toLowerCase();
if (counts[input] !== undefined) {
++counts[input];
return checkCounts();
}
};
checkCounts();
console.log(
`steering: ${counts.s} n turbo: ${counts.t} n wipers: ${counts.w}`
);
}
count();

相关内容

  • 没有找到相关文章

最新更新