Javascript元素值的总和

时间:2012-07-02 10:34:59

标签: javascript

javascript代码:

function getCheckbox(name,id){
  var check = 0; 
  var deger = "option-checkbox-"+id; 
  var dom = document.getElementById(deger); 
  if( dom.checked )
       check += parseFloat( dom.value ); 
  else check -= parseFloat( dom.value ); 
  return check.toFixed(2);**//right value.(12.45)** 
} 

function getRadio(name,id) {
  var radio=0; 
  var deger="option-radio-"+id; 
  var radio="option["+name+"]"; 
  var selectedli = document.getElementsByName(radio); 
  var degerli    = document.getElementById(deger); 
  if( selectedli.checked )
       radio = parseFloat( degerli.value );
  else radio = parseFloat( degerli.value )
  return radio.toFixed(2)**//right value.(42.00)** 
} 

function getSelected(name,id) {
  var selectedid="option["+name+"]"; 
  var selecte = 0; 
  var selected = document.getElementById( selectedid ); 
  selecte = parseFloat(selected.value); 
  return selecte.toFixed(2);**//right value.(-12.29)** 
} 

function toplam(name,id) {**//not expected(0)** 
  var toplan = 0; 
  toplan = getSelected(name,id)+getRadio(name,id)+getCheckbox(name,id); 
  $( '#toplam_goster' ).fadeOut(200, function(){
    document.getElementById("toplam_goster").innerHTML = toplan;
  }); 
  $( '#toplam_goster' ).fadeIn(200); 
} 

。在最后一个函数中返回0.如何修复它。

感谢。

2 个答案:

答案 0 :(得分:3)

  

return selecte.toFixed(2); //这会返回字符串和添加可能   返回0

返回号码,即返回选择* 1 或在加入前转换为数字,即

toplan=getSelected(name,id)*1+getRadio(name,id)*1+getCheckbox(name,id)*1; 

答案 1 :(得分:1)

此特定功能存在一些问题:

function getRadio(name,id) 
{      
    var radio=0; 
    var deger="option-radio-"+id; 
    var radio="option["+name+"]"; 
    var selectedli = document.getElementsByName(radio); 
    var degerli =document.getElementById(deger); 
    if(selectedli.checked) {
        radio = parseFloat(degerli.value);
    }
    else {
        radio = parseFloat(degerli.value)
    } 
    return radio.toFixed(2)**//right value.(42.00)** 
} 

您将radio变量声明两次 - 最初的值为0,然后是字符串。

你正在调用document.getElementsByName(),它返回一个元素数组,然后再执行selectedli.checked;该数组不具有checked属性。如果您希望它只返回一个radio元素,那么您应该测试selectedli[0].checked

无论条件是否为true,您都有if语句执行相同的代码。这可能是您的错误,也可能完全取消if语句。