2013-07-17 3 views
1

모든 행에 값과 체크 박스가 포함 된 HTML 테이블이 있습니다. 확인란을 클릭하면이 값을 다른 고정 셀에 추가하는 스크립트가 활성화됩니다. 체크 박스가 선택되면 번호가 추가되고, 선택하지 않으면 번호가 뺍니다.셀의 부동 소수점 값 변경

function val_sel_achat(val, id) 
{ 
    if (document.getElementById(id).checked) 
    { 
     document.getElementById('res_achat').innerHTML += val; 
    } 
    else 
    { 
     document.getElementById('res_achat').innerHTML -= val; 
    } 
} 

숫자를 추가하는 것이 아니라 체인을 연결하는 것 외에는 대부분 잘 작동합니다. 따라서 val = 100 인 상자를 선택하면 선택을 취소하고 100을 표시 한 다음 0을 입력하면됩니다. 그러나 두 개의 다른 상자 (예 : 100과 25)를 확인하면 10025가 표시됩니다.

대신 코드가 125로 표시되도록 변경하는 방법은 무엇입니까?

감사합니다.

+0

당신이 라운딩에 문제가있는 경우없이 작업이 사용합니다. 'document.getElementById를 ('res_achat ') innerHTML을 = (에서는 parseFloat (x) + val) .toFixed (2); ' – Stano

답변

1
function val_sel_achat(val, id) 
{ 
    var x = document.getElementById('res_achat').innerHTML; 
    if (document.getElementById(id).checked) 
    { 
     document.getElementById('res_achat').innerHTML = parseFloat(x) + val; 
    } 
    else 
    { 
     document.getElementById('res_achat').innerHTML = parseFloat(x) - val; 
    } 
} 
+0

val 대신 parseFloat (val)을 수행하더라도 NaN을 반환합니다. –

+0

@ user2542743 그래서 res_achat의 내용은 숫자가 아닙니다. 첫 번째 줄을 res_achat에서 실제 번호를 얻는 줄로 바꾸십시오. –

+0

처음에는 비어있었습니다. 나는 그것을 0으로 바꿨고, 지금은 매력처럼 작동한다. 고마워. –

0

사용 .parseFloat()

function val_sel_achat(val, id) { 
    var inner = document.getElementById('res_achat').innerHTML; 
    if (document.getElementById(id).checked) { 
     document.getElementById('res_achat').innerHTML = parseFloat(inner) + parseFloat(val); 
    } else { 
     document.getElementById('res_achat').innerHTML = parseFloat(inner) - parseFloat(val); 
    } 
} 

샘플 확인란 fiddle

+1

nope ............ innerHTML은 문자열로'- = '할 수 없습니다. –

+0

@RoyiNamir 감사합니다. 그것을 업데이트했습니다. – Praveen