nan в результате действия

242
04 мая 2017, 14:21

var summ; 
function selectItem(id) { 
  summ += Number($('#item-' + id).attr('data-price')); 
  $('#summ').text(summ); 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
<div id="block1"> 
  <div class="item-1" onclick="selectItem(1);" data-price="10" >selectItem(1)</div> 
  <div class="item-2" onclick="selectItem(2);" data-price="20" >selectItem(2)</div> 
</div> 
<br> 
summ: <div id="summ"></div>

Код должен считать сумму по атрибуту data-price, но почему-то отдает NaN

Answer 1
  1. задайте начальное значение для summ
  2. ищите класс .item-, а не идентификатор #item-

var summ = 0; 
function selectItem(id) { 
  summ += Number( $('.item-' + id).data('price') ); 
  $('#summ').text(summ); 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
<div id="block1"> 
  <div class="item-1" onclick="selectItem(1);" data-price="10" >selectItem(1)</div> 
  <div class="item-2" onclick="selectItem(2);" data-price="20" >selectItem(2)</div> 
</div> 
<br> 
summ: <div id="summ"></div>

Answer 2

В данном случае не инициализирована переменная summ. Ее значение по умолчанию - undefined.

Результат сложения undefined с любым числом даст NaN.

Как верно заметил @GlebKemarsky разметке присутствуют элементы с классом, а в функции ищутся элементы с id. Из-за этого,

$('#item-' + id).data('price')

Вернет undefined, и Number(undefined) даст NaN.

READ ALSO
Hover на изображениях jquery

Hover на изображениях jquery

После наведения мыши на одно изображение ховер эффект воспроизводиться и на всех остальныхКак сделать, чтобы ховер (белый блок с текстом...

300
Как добавить fadeIn эффект?

Как добавить fadeIn эффект?

Привет! Хочу добавить эффект фэйдинга чтобы, когда прокручиваешь страницу вниз элементы начинали появлятьсяНа данный момент в скрипте есть

216
Проверка заполнения всех полей формы

Проверка заполнения всех полей формы

Есть большая форма, содержащая большое количество:

199
Не правильно отображаются шрифты

Не правильно отображаются шрифты

Подскажите, почему в IE 11 отображаются не такие шрифты как надо? Можно ли это как-то исправить?

225