За последние 24 часа нас посетили 52582 программиста и 1764 робота. Сейчас ищут 774 программиста ...

Ошибка при переводе

Тема в разделе "JavaScript и AJAX", создана пользователем Kocapb, 7 июн 2010.

  1. Kocapb

    Kocapb Активный пользователь

    С нами с:
    10 июл 2008
    Сообщения:
    169
    Симпатии:
    0
    Здравствуйте. Столкнулся со следующей проблемой.
    Есть элемент html формы:
    HTML:
    1.  
    2. <tr>
    3.   <th width="100px">Flirt4Free</th>
    4.   <td>
    5.     <input name="f4f" id="f4f" type="text" size="12" maxlength="5" value="<?php echo $f4f?>" onchange="count()" dir="rtl" onFocus="this.select()"/>        
    6.   </td>
    7. </tr>
    8. <tr>
    9.   <th width="100px">Stream</th>
    10.   <td>
    11.     <input name="strm8" id="strm8" type="text" size="7" maxlength="7" value="<?php echo $strm8?>" onchange="count()" onFocus="this.select()" dir="rtl"/>
    12.   </td>
    13. </tr>
    14.  
    15. <tr>
    16.   <th>Total </th>
    17.   <td>
    18.     <p id="total1">&nbsp;</p>              
    19.   </td>
    20. </tr>
    21.  
    Функция count():
    [js]
    function count() {
    var sum_dollar;
    var f4f = document.getElementById('f4f').value;
    var strm8 = document.getElementById('strm8').value;

    if(isNaN(strm8)) {
    correctNumber('strm8');
    }
    if(isNaN(f4f)) {
    correctNumber('f4f');
    }
    else {
    }

    f4f = f4f * 0.0325;

    sum_dollar = f4f + parseFloat(strm8);
    document.getElementById('total1').innerHTML = sum_dollar.toFixed(2);


    }

    function correctNumber(site) {
    if(site == 'f4f') {
    var f4f = document.getElementById('f4f').value;
    var change = f4f.replace(",",".");
    document.calculator.f4f.value = change;
    }
    if(site == 'strm8') {
    var strm8 = document.getElementById('strm8').value;
    var change = strm8.replace(",",".");
    document.calculator.strm8.value = change;
    }
    }
    [/js]
    Работа данного приложения заключается в том чтобы если в поле введено значение с запятой, correctNumber убрало запятую и произвела сложение по полям, выведя значение в поле total1.
    Так вот, если в поле F4F ввести 1,654 то в поле total мы видим NaN, хотя при вводе в поле strm8 1,45 все ок.
     
  2. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    к чему тогда тема про оптимизацию кода была?
     
  3. Kocapb

    Kocapb Активный пользователь

    С нами с:
    10 июл 2008
    Сообщения:
    169
    Симпатии:
    0
    В теме "Оптимизация кода" я хотел научиться как "приводить все к общему виду".
    Тут я не могу понять почему у меня избирательно работает код. В одном поле он делает преобразование нормально в другом нет.
     
  4. iliavlad

    iliavlad Активный пользователь

    С нами с:
    24 янв 2009
    Сообщения:
    1.689
    Симпатии:
    4
    надо взять бумажку и ручку и самому произвести вычисления - самый простой метод, чтобы понять.
     
  5. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    приводите все переменные к float перед тем как складывать или умножать ато получается вы умножаете строку на число
    после replace переменная приводится к строке...
     
  6. Kocapb

    Kocapb Активный пользователь

    С нами с:
    10 июл 2008
    Сообщения:
    169
    Симпатии:
    0
    ок. спасибо =)