【问题标题】:Can't update array correctly in javascript... logic error?无法在 javascript 中正确更新数组...逻辑错误?
【发布时间】:2013-01-31 23:29:54
【问题描述】:
    <!DOCTYPE html>
    <html lang="en">
<head>
    <meta charset="utf-8" />
    <title>MultipleOf</title>
    <script>
                    var sales = new Array(9); //array for keeping sales numbers
        var pay = ["200-299","300-399","400-499","500-599","600-699","700-799","800-899","900-999","1000 and over"];
        var tally = new Array(9); //array for keeping statistics
        result=""; //for table creation
        temp="";

        for(i=0; i<9; i++){ //initialize empty arrays of numbers
            tally[i] =0;
            sales[i] =0;
        }

        function start(){  //button to launch everything
            var button = document.getElementById("clickButton");
            button.addEventListener("click", giveResult, false);
        }
        function giveResult(){ //is supposed to calculate sales and add one to the tally the position which the sale belongs.
            for(var i=0; i<9; i++){
                temp="e"+i;
                sales[i]= parseInt(document.getElementById(temp)); //Grab info from form (currently from first field)
                sales[i]=paid(sales[i]); //calculate pay for sales made and overwrite sales amount
                var placement = decide(sales[i]); //decide which statistic to increment according to amount paid
                tally[placement]= tally[placement]+1;  //increment statistic
            }
            var result = document.getElementById("result");
            temp = display(result);
            result.innerHTML = temp;
        }


        function paid(salesAmount){
            return 200+(salesAmount*0.09);
        }
        function decide(amountPaid){
            if(amountPaid>1000)
                return 8;
            else if(amountPaid>900)
                return 7;
            else if(amountPaid>800)
                return 6;
            else if(amountPaid>700)
                return 5;
            else if(amountPaid>600)
                return 4;
            else if(amountPaid>500)
                return 3;
            else if(amountPaid>400)
                return 2;
            else if(amountPaid>300)
                return 1;
            if(amountPaid>=200)
                return 0;
            else 
                return -1;
        }

        function display(value){
            value = "<table>"
            for(var i=0;i<pay.length; i++){
                value = value + "<tr><td>" + pay[i] + "</td>" + "<td>" + tally[i] + "</td>" ;  
            }
            value = value + "</table>";
            return value;
        }


        window.addEventListener("load",start,false);
    </script>
</head>
<body>
    <form action="#">
        <p><label>Enter Employee Sales for the week:</label></p>
            <p>Employee 1:<input id="e1" type="number" value="0"></p>
            <p>Employee 2:<input id="e2" type="number" value="0"></p>
            <p>Employee 3:<input id="e3" type="number" value="0"></p>
            <p>Employee 4:<input id="e4" type="number" value="0"></p>
            <p>Employee 5:<input id="e5" type="number" value="0"></p>
            <p>Employee 6:<input id="e6" type="number" value="0"></p>
            <p>Employee 7:<input id="e7" type="number" value="0"></p>
            <p>Employee 8:<input id="e8" type="number" value="0"></p>
            <p>Employee 9:<input id="e9" type="number" value="0"></p>
            <p><input id = "clickButton" type="button" value = "Calculate"></p>
    </form>
    <p id = "result"></p>
        <footer>
            <p>
            </p>
        </footer>
</body>

我希望将销售数字输入一个表格,然后使用函数paid() 计算每个员工的收入,然后将这些收入分类到一个表格中,表格的范围由 pay 数组定义。

问题是我不确定我做错了什么,是我的paid() 函数弄乱了计数器吗?

计数数组未正确更新,我不知道为什么。

【问题讨论】:

    标签: javascript arrays


    【解决方案1】:

    sales[i]= parseInt(document.getElementById(temp)); //Grab info from form (currently from first field)

    改用parseInt(document.getElementById(temp).value, 10)

    【讨论】:

      【解决方案2】:

      具有sales[i]= parseInt(document.getElementById(temp)); 的行正在对元素使用 parseInt,尝试使用它来获取输入字段的值:

      sales[i]= parseInt(document.getElementById(temp).value);
      

      【讨论】:

        猜你喜欢
        • 2021-10-01
        • 1970-01-01
        • 2018-07-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多