Javascript возвращает Nan в IE, хорошо FF - PullRequest
0 голосов
/ 25 мая 2010

Я очень новичок в javascript, и пишу этот скрипт для добавления корзины покупок и распечатывания промежуточных итогов и итогов. это работает в FF, но не в IE. эта функция вызывается при нажатии одной из трех опций выбора со значением 0-25. это в js-файле, вызываемом в голове. он получает выбранные значения как переменные, анализирует их, добавляет и умножает и изменяет innerHTML таблицы, чтобы отразить промежуточные итоги и итоги. FF делает это замечательно, но IE дает Nan. Я пытался переписать его несколькими различными способами, и многие переводы все еще работают в FF, но не в IE8. Я убедился, что переменные и идентификаторы формы не повторяются.

function gen_invoice() {
    var scount = parseInt(document.shopcart.studentcount.value, 10);
    var ycount = parseInt(document.shopcart.youthcount.value, 10);
    var fcount = parseInt(document.shopcart.facultycount.value, 10);

    //html output source is 3 selects like this, with diff ids and names: 
    //<select name="studentcount" id="studentcount">  
    //<option onclick="gen_invoice()" value="0">0 </option></select>
    var cardcost = parseInt(document.shopcart.cardprice.value, 10);

    //cardcost comes from hidden input value: 
    //<input type="hidden" id="cardprice" name="cardprice" value="25">
    var totalsum = scount + ycount + fcount;

    var grandtotal = totalsum * cardcost;

    document.getElementById('s_price').innerHTML = scount * cardcost;
    document.getElementById('y_price').innerHTML = ycount * cardcost;
    document.getElementById('f_price').innerHTML = fcount * cardcost;
    document.getElementById('grand').innerHTML = grandtotal;
    //....
}

... после этого есть 3 длинных цикла для записи некоторых других форм, но они также не работают в IE, потому что они зависят от выбранных значений, чтобы быть целым числом. эта часть происходит первой и возвращает Нэн, так что я уверен, что проблема здесь где-то. Я буквально ударился головой об стол из-за этого. Вы можете вообразить, как расстраивает умение красиво писать весь остальной сайт, но затем не удается сложить 3 числа вместе. Помогите, пожалуйста!

Ответы [ 2 ]

1 голос
/ 25 мая 2010

Возможно, вам больше повезет с доступом к элементам форм с помощью

  • document.getElementById("foo")
  • document.forms.shopcart.elements.cardprice

Оба эти подхода лучше, чем то, что вы делаете сейчас.

0 голосов
/ 25 мая 2010

innerHTML ожидает строковые объекты, а не числа.Попробуйте добавить '' (пробел) после числового выражения.

вроде: ....innerHTML = (count * cardcost) + "";

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...