Javascript函数从html选择菜单中获取所选值的总和

Javascript function to get sum of selected values from html select menu

本文关键字:获取 函数 html 选择 菜单 Javascript      更新时间:2023-09-26

我的HTML代码是:

<div data-role="fieldcontain"style="padding:0; margin:0; padding-top:0px;">

            <div style = "margin-top:-5px">
                <select name="selectmenue1" id="sm" data-native-menu = "false" multiple = "multiple" >
                    <option value="1" selected="selected">iOS</option>
                    <option value="2">Android</option>
                    <option value="3">BlackBerry</option>
                    <option value="4">Others</option>
                </select>
            </div>
        </div>

我使用这个Javascript函数来获得所选值的总和:

function check_sm() 
        {
        var c_value = 0;
        for (var i=0; i < document.myform.sm.length; i++)
        {
        if (document.myform.sm[i].checked)
        {
        c_value = (eval(c_value) + eval(document.myform.sm[i].value));
        }    
        }
        alert(c_value);
        }

函数不起作用。需要一些建议。

使用selected应该可以解决您的问题。参见以下代码

  function check_sm() {
        var c_value = 0;
        var sm1 = document.getElementById("sm");
        for (var i = 0; i < sm1.length; i++) {
            if (sm1[i].selected)
            { c_value = (eval(c_value) + eval(sm1[i].value)); }
        } alert(c_value);
    }

你的意思是:


var c_value = 0;
function check_sm() {
    var Selected = document.myform.selectmenue1.selectedIndex;
    var selectedVal = document.myform.selectmenue1.options[Selected].value;
    selectedVal = parseInt(selectedVal, 10);
    c_value +=selectedVal;
    alert(c_value);
}

我认为select元素中没有可用的"checked"属性。你必须使用.selected属性来确定选项是否被选中,比如-

function getSum(){
var sm = document.getElementById("sm");
var sum = 0;
for(var i=0;i<sm.options.length;i++)
{
if(sm.options[i].selected){
    sum+=parseInt(sm.options[i].value);
}
}
alert(sum);
}

使用jquery可以做得更好:-

$("select").change(function () {
    var count = 0;
    $("select option:selected").each(function () {
        count = Number(count) + Number($(this).val());
    });
    alert(count);
}).change();