使用JavaScript获取复选框中的最小值

使用JavaScript获取复选框中的最小值,javascript,checkboxlist,Javascript,Checkboxlist,当我选择了10个以上的项目时,我希望使用JavaScript获得最小的值。但是我无法根据我的代码得到结果。我认为错误在“price[I]”中,但我不知道如何正确地书写它。 这是我的密码。获得最小值的正确方法是什么 <!DOCTYPE html> <html> <head> <script type="text/javascript"> function getprice() { var total=0.00,i,co

当我选择了10个以上的项目时,我希望使用JavaScript获得最小的值。但是我无法根据我的代码得到结果。我认为错误在“price[I]”中,但我不知道如何正确地书写它。 这是我的密码。获得最小值的正确方法是什么

<!DOCTYPE html>
<html>
<head>
<script type="text/javascript">
    function getprice()
    {
        var total=0.00,i,count=0,min=0;

        for(i=0; i<document.frm1.item.length; i++)
        {
            if(document.frm1.item[i].checked)
                {
                    total=total+parseInt(document.frm1.item[i].value);
                    count=count+1;
                }
        }
        document.getElementById("totalprice").innerHTML="Total Price : RM "+ total.toFixed(2);
        document.getElementById("totalitem").innerHTML="Total item: "+count;


        if(total>=300 && count>=10)
        {
            for(i=0; i<document.frm1.item.length; i++)
            {
                if(document.frm1.item[i].checked)
                {
                    price[i]=document.frm1.item[i].value;

                    if(price[i]<min)
                        min=price[i];
                }
            }

            document.getElementById("smallestp").innerHTML="Smallest price : RM "+ min.toFixed(2);
        }
    }

</script>
</head>
<body>
<form name="frm1">

<input type="checkbox" name="item" value="100"/>Pan     RM 100</br>
<input type="checkbox" name="item" value="50"/>Fork     RM 50</br>
<input type="checkbox" name="item" value="200"/>Stove   RM 200</br>
<input type="checkbox" name="item" value="10"/>Pen      RM 10</br>
<input type="checkbox" name="item" value="60"/>Mouse    RM 60</br>
<input type="checkbox" name="item" value="40"/>Keyboard RM 40</br>
<input type="checkbox" name="item" value="30"/>Glue     RM 30</br>
<input type="checkbox" name="item" value="210"/>Speaker RM 210</br>
<input type="checkbox" name="item" value="300"/>Case    RM 300</br>
<input type="checkbox" name="item" value="80"/>Cable    RM 80</br>
<input type="checkbox" name="item" value="110"/>Extention   RM 110</br>
<input type="checkbox" name="item" value="400"/>Redmi   RM400</br>

<p><input type="button" name="subbtn" value="Send" onclick="getprice();"/></p><br/>

<p id="totalprice"></p>
<p id="totalitem"></p>
<p id="newupdatep"></p>
<p id="smallestp"></p>


</form>
</body>
</html>

函数getprice()
{
var总计=0.00,i,计数=0,最小=0;
对于(i=0;i=300&&count>=10)
{
对于(i=0;i我使用
Array#filter
筛选所有选中的复选框,然后将其映射到
Array#map
以获取每个选中复选框的值。然后使用
Math.min.apply
获取最低值

函数getprice(){
var总计=0.00,
i、 计数=0,
最小值=0;
对于(i=0;i=300和计数>=10){
var elems=Array.from(checked).filter(v=>v.checked.map(c=>Number(c.value));
var cheapest=Math.min.apply([],elems);
document.getElementById(“smallestp”).innerHTML=“最小价格:RM”+最便宜的.toFixed(2);
}
}

Pan RM 100
叉子50室
炉子RM200
10号房
鼠标RM 60
键盘RM40
胶水RM30
扬声器RM 210
案例RM300
电缆室80
分机110室
雷德米RM400



这是您的代码更新。我更改了一些部分以使其更简单、更清晰

选中复选框的所有值都存储在
checkedValues
数组中

此代码正在使用
Array#filter()
Array#map()
Array#reduce()
math.min.apply

函数getprice(){
让checkedValues=Array.from(document.frm1.item).filter(i=>i.checked.map)(i=>+i.value);
让total=checkedValues.length==0?0:checkedValues.reduce((a,b)=>a+b);
document.getElementById(“totalprice”).innerHTML=“总价:RM”+Total.toFixed(2);
document.getElementById(“totalitem”).innerHTML=“Total item:”+checkedValues.length;
如果(总计>=300&&checkedValues.length>=10){
让min=Math.min.apply(Math,checkedValues);
document.getElementById(“smallestp”).innerHTML=“最小价格:RM”+min.toFixed(2);
}
}

Pan RM 100
50号货叉
炉子RM 200
钢笔RM 10
鼠标RM 60
键盘RM 40
胶水RM 30
扬声器RM 210
案例RM 300
电缆RM 80
扩展RM 110
Redmi RM400



问题出在哪里?为什么你认为
价格
存在?如果所有复选框都有相同的名称,你将如何判断选择了什么?这将发送类似
?item=50&item=30&item=300…
。问题是当我运行代码时,它不会显示我想要的结果。在我删除“price[I]”之后然后我的代码就可以工作了。我计划给它们起相同的名字,但使用数组来区分它们。你应该先试试你的代码。这将生成一个error@Weedoze是的,我把右括号放错地方了;)@Kinduser没问题:)谢谢。有些代码对我来说是新的。我从来没有学过这样的东西。我会努力理解它。@初学者花时间阅读每个方法的文档。这并不复杂。如果你仍然有一些问题,你可以在这里问。如果解决了你的问题,别忘了厚厚地回答。好的,我会问你我不明白。谢谢!呃,我不明白这些。
让checkedValues=Array.from(document.frm1.item).filter(I=>I.checked.map(I=>+‌​i、 值);
let total=checkedValues.length==0?0:checkedValues.reduce((a,b)=>a+b)
i.checked的意思是什么?0.0的意思是什么?@初学者
i
是复选框之一。它将查看属性
checked
是真是假。
filter
将只保留选中的复选框。
checkedValues.length==0?0:…
是三元运算符。如果数组的长度
0
返回
0
否则返回
reduce()的结果