2012-03-09 94 views
2

我的HTML代碼是javascript函數從HTML選擇menue獲得選擇值的總和

<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); 
     } 

功能不加工。需要一些建議。由於

回答

3

使用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); 
    } 
+0

由於它的工作原理... !!! – 2012-03-09 10:27:54

0

你的意思是:

 

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); 
} 
 
0

我不認爲有被「選中」屬性中選擇元素可用。你必須使用.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); 

} 
0

你可以做的更好的使用jQuery: -

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