2013-05-10 2 views
0

Я использую этот JavaScript код:Javascript добавить значения флажка по щелчку

<script> 
function add(total, this_chk_bx) 
{ 
    var thetotal = form2.thetotal.value; 

    if(this_chk_bx.checked==true) 
    { 
     //add if its checked 
     form2.thetotal.value = Number(thetotal)+Number(total); 
    } 
    else 
    { 
     //subtract if its unchecked 
     form2.thetotal.value = thetotal-total; 
    } 
} 
</script> 

И тогда я PHP/HTML код, который выбирает из таблицы в базе данных и добавляет флажки со значениями в качестве поля поплавка в базы данных.

То, что я пытаюсь сделать, это сделать так, чтобы при галочке флажки добавляли значения вверх и отображали их в текстовом поле, а затем, когда они не отмечены, оно удаляет это значение из поля ,

По какой-то причине при вычитании он отображает нечетные числа и неверно.

Я создал скрипку здесь, так что вы можете также увидеть HMTL: http://jsfiddle.net/j08691/kHxmG/4/

Любые идеи о том, что я могу сделать, чтобы заставить его работать правильно?

+0

Ваша скрипка сломана – NullPointerException

+1

У вас есть проблема из-за значений с плавающей запятой. Посмотрите на это http://stackoverflow.com/questions/1458633/elegant-workaround-for-javascript-floating-point-number-problem – NullPointerException

+0

Я исправил скрипку. – j08691

ответ

0

***jsFiddle Demo***

Я предлагаю вам прочитать эти сообщения:

Написать функцию, чтобы исправить номер для вас:

function correctNumber(number) { 
    return (parseFloat(number.toPrecision(12))); 
} 

И передать свой окончательный номер для этой функции:

function add(total, this_chk_bx) { 
    var thetotal = (form2.thetotal.value * 1); 
    var total = total * 1; 

    if (this_chk_bx.checked == true) { 
     //add if its checked 
     form2.thetotal.value = correctNumber(thetotal + total); 
    } else { 
     //subtract if its unchecked 
     form2.thetotal.value = correctNumber(thetotal - total); 
    } 
} 

Не забудьте проверить jsFiddle Demo.

+0

отличная - сработано совершенно. Огромное спасибо! – 2013-05-10 19:51:18

0
function add(total, this_chk_bx) 
{ 
    var thetotal = form2.thetotal.value; 
    if(this_chk_bx.checked==true) 
    { 
     //add if its checked 
     form2.thetotal.value = ((thetotal*100)+(total*100))/100; 
    } 
    else 
    { 
     //subtract if its unchecked 
     form2.thetotal.value = ((thetotal*100)-(total*100))/100; 
    } 
} 
+0

попробуйте проверить верхнюю, затем вторую, затем снимите верхнюю и посмотрите на номер в общей коробке - это то, что происходило со мной раньше - это действительно запутывает меня сейчас lol – 2013-05-10 19:11:39

+0

ссылка, отправленная @NullPointerException имеет хорошее описание и решение этой проблемы. – Orangepill

+0

ive попытался выполнить функцию sprintf, подобную sprintf («%. 2», всего), но все еще ничего - ее даже не отображали значения в текстовом файле – 2013-05-10 19:26:30