javascript - 我是否需要创建第三个累加器来保存此 while 循环中的项目类型?

标签 javascript while-loop

全部 首先,希望大家度过一个愉快的感恩节。 其次,我不知道如何做到这一点。我需要为婚礼策划师编写一个程序。他们希望为每对夫妇创建一个礼物登记册。他们希望根据送礼者是新娘一方还是新郎一方来分割礼物。他们还知道特定的礼物( toastr 、银器和高脚杯)往往会重复出现,因此他们希望列出这些礼物并在其下方注明送礼者的姓名。重复的礼物只是客户告诉您的礼物( toastr 、银器和高脚器皿),他们不希望您确定哪些礼物是重复的,他们只是在寻找特定的三件礼物。

所以我的输出应该显示为: 新郎方: 1.汤姆: toastr 2.比尔:银器 3.鲍勃:高脚杯 4.史蒂夫:雷克萨斯

新娘方: 1.吉尔: toastr 2.苏西:银器 3.拍拍:高脚杯 4.凯伦:马

多个 toastr : 汤姆 吉尔

但是,它与我编码的内容不一致,并且陷入了困境。我也无法弄清楚如何制作第三个累加器(我假设我必须制作它来存储不同类型的礼物?)任何我应该走的方向的输入都会很棒。

代码:

<script type="text/javascript">
<!--

//Assumptions
var brideCounter = 0;
var groomCounter = 0;
var gift, sideOfFamily, groomAccum, brideAccum;
var giftBride, giftGroom,multipleItems;

//initializing loop
var registry = "yes";

//Start Looping
while (registry == "yes")
{
 name = prompt("What is your name?","");
 sideOfFamily = prompt("Which side of the family are you on? bride or groom","");
            if (sideOfFamily == "groom")
            {
            giftGroom = prompt("What type of gift do you have?","");
            groomCounter= groomCounter + 1;
                    if (groomCounter = 1)
                    {
                    groomAccum = "Groom Side:<br>" + groomCounter + ". " + name+ ": " + giftGroom;
                    }
                    else
                    {
                    groomAccum = groomAccum + ", " + groomCounter + ". " + name + ": " + giftGroom;
                    }
                alert(groomAccum);
            }
            else
            {
            giftBride = prompt("What type of gift do you have?","");
            brideCounter = brideCounter + 1;
                    if (brideCounter = 1)
                    {
                    brideAccum =    "Bride Side: " + brideCounter + ". " + name + ": " + giftBride;
                    }
                    else
                    {
                    brideAccum = brideAccum + ", " + brideCounter + ". " + name  + ": " + giftBride;
                    }
                alert(brideAccum);
                }
                registry = prompt("Are you registering for the wedding gifts?","");
}

//Output
document.write(groomAccum + brideAccum);
document.write(multipleItems);



// -->
</script>

最佳答案

您的问题是您使用赋值运算符 (=) 而不是比较运算符(=====)。

最好使用 ===,它比 == 更快,如果您忘记了,该代码也可以工作。

参见https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Comparison_Operators有关比较运算符的完整信息。

我还清理了你的代码。

Demo

//Assumptions
var keys = ['groom','bride'],
    counter = {bride: 0, groom: 0},
    gift = {},
    accum = {bride: '', groom: ''},
    sideOfFamily;

//initializing loop
var registry = true;

//Start Looping
while (registry)
{
    name = prompt("What is your name?","");

    do {
        sideOfFamily = (prompt("Which side of the family are you on? bride or groom", keys[Math.random()*2 | 0]) || '').toLowerCase();
    } while (keys.indexOf(sideOfFamily) === -1);

    gift[sideOfFamily] = prompt("What type of gift do you have?","");
    if(++counter[sideOfFamily] === 1) {
        accum[sideOfFamily] = sideOfFamily[0].toUpperCase() + sideOfFamily.substring(1) + " Side:\n";
    } else {
        accum[sideOfFamily] += ", ";
    }
    accum[sideOfFamily] += counter[sideOfFamily] + ". " + name + ": " + gift[sideOfFamily];
    alert(accum[sideOfFamily]);
    registry = confirm("Are you registering for the wedding gifts?");
}

//Output
output.innerHTML = '';
output.appendChild(
    document.createTextNode(accum.groom + '\n\n' + accum.bride)
);

如果您想支持不支持 indexOf 的旧浏览器,请使用 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf#Compatibility 中的代码

关于javascript - 我是否需要创建第三个累加器来保存此 while 循环中的项目类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20305992/

相关文章:

java - 循环代码导致堆栈溢出

javascript - 将 HTML 明文数据解析为 javascript 数组

Javascript:从另一个 html 页面获取单选按钮值

JavaScript 类 "undefined"- IE7

c++ - 虽然循环终止被覆盖?

c - 在 while 循环中等待在 C 中按 Enter 键?

c - while循环在C中获取()两次

javascript - ng-repeat 垂直溢出

javascript - Codeigniter 问题中的 Ajax

php - 从表中选择列1、列2,其中值=某个值