0

javascript code:

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

.In the last function return 0. How can I fix it.

Thanks.

4

2 回答 2

3

返回 selecte.toFixed(2); // 这会返回字符串,加法可能会返回 0

要么返回数字,即返回selecte*1,要么在添加前转换为数字,即

toplan=getSelected(name,id)*1+getRadio(name,id)*1+getCheckbox(name,id)*1; 
于 2012-07-02T10:39:59.537 回答
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()which 返回一个元素数组,然后再执行selectedli.checked; 该数组将没有选中的属性。如果你期望它只返回一个radio元素,你应该测试selectedli[0].checked.

无论条件是否为真,您都有一个if执行相同代码的语句。这要么是您的错误,要么if可以完全取消该声明。

于 2012-07-02T10:45:47.270 回答