Javascript计算数组中每种类型的数量

标签 javascript

我试图计算数组“flowers”中每种类型的花的数量,该数组存储在外部库的数组中。有“玫瑰”、“万寿菊”、“郁金香”三种花。我有一个带有按钮的 html 页面,单击该按钮会告诉我存储的数组中每朵花有多少朵。但是,我的程序在运行时不会给我计数。代码对我来说看起来是正确的,所以我完全不知道它有什么问题。

document.getElementById('go').onclick = function () {

roseCount = 0;

marigoldCount = 0;

tulipCount = 0;

lengthArray = flowers.length;

for (f = 0; f < lengthArray; f++) {

    if (flowers[f] == 'rose') {

        roseCount ++;

    };

    if (flowers[f] == 'marigold') {

        marigoldCount ++;

    };

    if (flowers[f] == 'tulip') {

        tulipCount ++;

    };

    document.getElementById('tulip').value = tulipCount;

    document.getElementById('rose').value = roseCount;

    document.getElementById('marigold').value = marigoldCount;

  };

};

HTML

<body>

    <button id = 'go' class = ''>COMPUTE</button>
    <input id = 'number' name = '' value = '' class = ''>
    <input id = 'sum' name = '' value = '' class = ''>
    <input id = 'average' name = '' value = '' class = ''>
    <script src = 'http://gobongo.net/information/24065/script/javascript array 02 data.js'></script>
    <script src = 'js/javascript 11.js'></script>
</body>

最佳答案

您试图在文档加载完成之前将 onclick 处理程序附加到元素。因此,将您的代码替换为:

// ignore this line, you already have a flowers array
var flowers = ['rose','rose','rose','marigold','marigold','marigold','tulip','tulip'];

// wait for the DOM to load
window.onload = function() {

    // attach your event handler now the DOM is ready!       
    document.getElementById('go').addEventListener('click', function () {

        var roseCount = 0;
        var marigoldCount = 0;
        var tulipCount = 0;

        // calculate number of items
        for (var i=0, l=flowers.length; i<l; i++) {
            if (flowers[i] === 'rose') roseCount++;
            if (flowers[i] === 'marigold') marigoldCount++;
            if (flowers[i] === 'tulip') tulipCount++;
        }

        // update your inputs outside of the loop!
        document.getElementById('tulip').value = tulipCount;
        document.getElementById('rose').value = roseCount;
        document.getElementById('marigold').value = marigoldCount;
    });
}
<!-- clean up your HTML... just to satisfy my OCD :) -->
<body>
  <button id="go">COMPUTE</button>
  <input id="tulip" name="tulip" value="">
  <input id="rose" name="rose" value="">
  <input id="marigold" name="marigold" value="">
  <script src="http://gobongo.net/information/24065/script/javascript array 02 data.js"></script>
  <script src="js/javascript 11.js"></script>
</body>

关于Javascript计算数组中每种类型的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46857411/

相关文章:

javascript - 在 ReactJS 中隐藏条件文本

javascript - OnClick 加载新的 HTML 文档并应滚动到其底部

javascript - 从标题获取维基百科 pageid

javascript - 工厂函数链表问题

javascript - 使用 Reactjs-promise 中的 Promise 会返回错误

javascript - 在服务器上处理 cloneNode

javascript - 通用池函数返回回调结果

javascript - 没有插件的 jquery 排序表

javascript - 使用方法 sort() 对数组元素中的符号进行排序

javascript - 如何在 XHTML 中添加 jQuery CDN 回退?