2015-03-03 3 views
-4

Я изо всех сил, чтобы преобразовать функцию JavaScript ...преобразования функции яваскрипта в JQuery

Оригинальный код:

function calcTotal(){ 

//get value of select(tickets) 
var ticketCost = 0; 
if(document.moaflevent.moaflmember.value=="Yes") { 
    var ticketPrice = 35; 

}else { 
    var ticketPrice = 40; 

} 
ticketCost = (document.moaflevent.tickets.options[document.moaflevent.tickets.selectedIndex].value)*ticketPrice; 

document.moaflevent.displaytotal.value= formatCurrency(ticketCost); 
document.moaflevent.total.value=ticketCost; 
} 

мой JQuery синтаксис:

function calcTotal() { 

    //get value of select(tickets) 
    //var ticketCost = 0; 

    var ticketCost = 0; 

    if ($('#moaflmember').val() == "Yes") { 
     var ticketPrice = 10; 
    } else { 
     $ticketPrice = 10; 
    } 

    $('#eachTicket').text($ticketPrice); 
    $ticketCost = $('#tickets').val() * $ticketPrice; 

    $('#displaytotal').val().toUSD($ticketCost);  
    $('#total').val().toUSD($ticketCost); 
} 

это не работает, общая сумма не изменяется при выборе членства или количества билетов ...

jsfiddle says my JS это хорошо, но я не уверен, что я делаю неправильно здесь ...

http://jsfiddle.net/kv7L0c5d/5/

+0

Есть несколько различий. Во-первых, вы не используете 'var' в ветке' else', и оба ветви возвращают '10'. Но сначала я проверю, действительно ли выражения типа '$ ('# moaflmember')' действительно найдут элемент. – GolezTrol

+0

Я пробовал твою скрипку. Он * показывает * ошибки при проверке вкладки консоли. Первая ошибка, которую вы получите (при выборе «Да»), может быть решена путем выбора «no wrap» в параметрах Javascript скрипта ([обновление] (http://jsfiddle.net/kv7L0c5d/9/)). После этого вы увидите * актуальные * ошибки, которые в основном связаны с тем, что 'ticketPrice' не совпадает с' $ ticketPrice'. – GolezTrol

+0

http://jsfiddle.net/q2gqc1yo/ – SpYk3HH

ответ

4
  • Вы используете противоречивую смесь $ticketPrice и ticketPrice. Это не одно и то же.
  • Вы не указали переменную $ticketCost.
  • toUSD не метод на строки типа данных, так что вы не можете назвать $('#displaytotal').val().toUSD($ticketCost);

следующие работы:

function calcTotal() { 
    var ticketPrice = 0, 
     ticketCost; 

    if ($('#moaflmember').val() == "Yes") { 
     ticketPrice = 10; 
    } else { 
     ticketPrice = 10; 
    } 

    $('#eachTicket').text(ticketPrice); 
    ticketCost = $('#tickets').val() * ticketPrice; 

    $('#displaytotal').val(toUSD(ticketCost)); 
    $('#total').val(toUSD(ticketCost)); 
} 

http://jsfiddle.net/kv7L0c5d/10/

+0

не забудьте поймать ошибки, которые произойдут, если вход не может быть преобразован в число ... – Alnitak

+0

, который сделал трюк! Благодарю. – Nando

+0

На всякий случай это помогает, если вы читаете ввод как число, используйте 'parseInt ($ ('# tickets'). Val(), 10)' this обрабатывает ввод как базовый номер 10 –

Смежные вопросы