Поле Div не обновляется

#javascript #html #css

#javascript #HTML #css

Вопрос:

Я не уверен, почему это поле не обновляется с правильным номером. Стоит отметить, что по какой-то причине любое число <1 округляется в функции alert(). Я думаю, что все числа просто округляются в меньшую сторону, но я не знаю другого способа получить значение, которое этого не сделает? Есть предложения?

фактическое значение = 0.03

 var citrullineChoice = document.getElementById("citrulline").getElementsByClassName("on")[0].value;
  

предупреждение возвращает 0

фактическое значение = 0.03

 var tyrosineChoice = document.getElementById("tyrosine").getElementsByClassName("on")[0].value;
  

предупреждение возвращает 1

Код здесь

Комментарии:

1. В вашем примере кода вы используете jQuery. Есть ли какая-либо причина, по которой вы не используете jQuery для получения значения?

2. @Kolby, энтузиасты скорости и производительности ;). OP может использовать движок SizzleJS.

3. @Kolby в основном потому, что я знаю только javascript. этот код был всего лишь небольшим отрывком из моего javascript, поэтому, возможно, я делаю что-то не так…

4. @NickGarver, примечание: вы загружаете в свое приложение библиотеку размером 82 КБ, либо используйте ее, либо не загружайте. Нет ничего плохого в использовании ванильного JavaScript, здесь вам не нужен jQuery.

Ответ №1:

Вы пытаетесь использовать метод parseFloat(), потому что javascript может пытаться добавить значение в int .

 var tyrosineChoice = parseFloat(document.getElementById("tyrosine").getElementsByClassName("on")[0].value);
  

Ответ №2:

Используйте .innerText вместо .value — у вас нет никаких входных элементов.

Библиотека jQuery не добавлена в ваш пример, есть ошибка консоли:

pen.js: 191 Неперехваченная ошибка ссылки: $ не определен

на

 $("#perServing").html("$"   perServing);
  

Ответ №3:

Вот исправление для того, что вы хотите: http://codepen.io/emiyake/pen/bwKRQP

Я передаю значение функции, вместо того, чтобы добавлять его в качестве значения атрибута к вашему элементу.

 <li id="caffeinetwo" class="off" onclick="changeClass(this, 0.03)">250</li>
  

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

Комментарии:

1. Боже мой, большое тебе спасибо. Я пытался найти более чистый способ сделать это, и вау, это было отличное обновление. Мне нужно будет отслеживать эти числа в базе данных, так что это помогает мне больше, чем вы думаете.

Ответ №4:

Вы должны использовать .getAttribute('value') вместо .value

 var citrullineChoice = parseFloat(document.getElementById("citrulline").getElementsByClassName("on")[0].getAttribute('value'));
  

Вот ваш codepen