2016-10-18 3 views
-1

Я не могу найти, почему я получаю NaN для печати номера с помощью javascript.Почему я получаю NaN при разборе номера в Javascript

Следующий код, который я использую, повторяется в другом месте на веб-сайте и отлично работает.

URL, о котором идет речь: http://all-american-gold10.mybigcommerce.com/us-silver-eagles/

Мой код выглядит следующим образом:

function setCheckPrice() { 
    $('.NormalPrice').each(function(key, val) { 
    var price = $(val).html().replace('$', '').replace(',', ''); 
    var newPrice = parseInt(price) * .03; 
    var setPrice = Math.floor(price - newPrice); 

     var credit = '<small style="font-size: 20px !important;"> - credit card price</small>'; 
     var check = '<p><em class="new-price">$' + setPrice +'<small style="font-size: 20px !important;"> - check price</small></em></p>'; 

     $(val).append(credit); 

     $(val).prepend(check); 



     }) 

}; 

setCheckPrice(); 

Мой код занимает несколько найденную определенным именем класса, делает некоторые математике и плюет обратно с некоторыми дополнительный html, чтобы согласиться с этим. Я попытался переключить способы, с помощью которых я вывел код с append, prepend, before & after, но никто не работает? Любая причина, почему это действует так странно?

+0

Пожалуйста, обновите вопрос с помощью вашей разметки – Geeky

+0

@Pointy Это неверно. Если вы передаете строку, она буквально заменяет подстроку. – Xufox

+0

Просто добавьте 'console.log (price)' и посмотрите, что у вас действительно есть – adeneo

ответ

1

В переменной price имеется дополнительный html. Вы должны рассмотреть наличие отдельных элементов с классом, который содержит только то значение, которое вам нужно, и ничего больше. Как быстро исправить, это изменение:

var price = $(val).val().replace('$', '').replace(',', '').replace(" ",""); 

получить это мне значение 490 для price на этой странице, которая является то, что вы ищете.

+0

Значение, которое я ищу, - это измененная цена, которая все еще возвращает NaN с кодом, который вы предложили. console.log (price) возвращает 490, что является правильным, но я пытаюсь показать значение var setPrice, из которого происходит NaN. – privateer35

+0

Так как у цены есть html-разметка, то как newPrice, так и setPrice будет NaN. Корень вашей непосредственной проблемы заключается в следующем: var price = $ (val) .html(). Replace ('$', '') .replace (',', ''); возвращает кучу html-разметки, которая не может быть правильно проанализирована в целое число. Рассмотрите возможность очистки своего html, если у вас есть контроль над этим. –

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