2016-09-29 10 views
1

Поэтому у меня есть этот код (Fiddle):Почему этот счетчик не работает?

(function() { 
 
    var meter = document.getElementById('somemeter'); 
 
    var Likes = document.getElementById('likes'); 
 
    var Dislikes = document.getElementById('dislikes'); 
 

 
    meter.max = Likes.innerHTML + Dislikes.innerHTML; 
 
    meter.value = Likes.innerHTML - Dislikes.innerHTML; 
 
})();
<div id="likes">500</div> 
 
<div id="dislikes">50</div> 
 
<meter value="10" min="0" max="1000" id="somemeter"></meter>

Как вы можете видеть, Likes.innerHTML является 500 и Dislikes.innerHTML является 50

По какой-то причине не meter.max работа, когда я использую Likes.innerHTML или Dislikes.innerHTML; однако, когда я заменяю их на meter.max на 500 и 50, он работает.

Я что-то не так?

ответ

2

Javascript строка обнаружения, вы должны использовать parseInt значения, попробуйте этот код:

(function() { 
 
    var meter = document.getElementById('somemeter'); 
 
    var Likes = document.getElementById('likes'); 
 
    var Dislikes = document.getElementById('dislikes'); 
 

 
    meter.max = parseInt(Likes.innerHTML) + parseInt(Dislikes.innerHTML); 
 
    meter.value = parseInt(Likes.innerHTML) - parseInt(Dislikes.innerHTML); 
 
    
 
    console.log(meter.max) 
 
})();
<div id="likes">500</div> 
 
<div id="dislikes">50</div> 
 
<meter value="10" min="0" max="1000" id="somemeter"></meter>

+0

Будет ли использовать parseInt() лучше, чем с помощью Number()? –

+0

http://stackoverflow.com/questions/4090518/what-is-the-difference-between-parseint-and-number – CMedina

+0

Прохладный, спасибо человеку –

3

Ваш код принимает innerHTML как строку. Использование ParseInt вместо:

(function() { 
 
    var meter = document.getElementById('somemeter'); 
 
    var Likes = document.getElementById('likes'); 
 
    var Dislikes = document.getElementById('dislikes'); 
 

 
    meter.max = parseInt(Likes.innerHTML, 10) + parseInt(Dislikes.innerHTML, 10); 
 
    meter.value = parseInt(Likes.innerHTML, 10) - parseInt(Dislikes.innerHTML, 10); 
 
})();
<div id="likes">500</div> 
 
<div id="dislikes">50</div> 
 
<meter value="10" min="0" max="1000" id="somemeter"></meter>

+0

бы с помощью ParseInt() будет лучше, чем при использовании Number()? –

+0

@ChizbeJoe 'Number' отлично. Просто рассмотрите, как вы можете обрабатывать не числовые значения. Кроме того, причина, по которой я поставил radix (10), заключается в том, что не включая его, позволяет браузеру/платформе выбрать radix. См. [ParseInt at MDN] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseInt). – Theraot

0

Вам нужно преобразовать строки к числовым значениям для работы математики:

(function() { 
    var meter = document.getElementById('somemeter'); 
    var Likes = document.getElementById('likes'); 
    var Dislikes = document.getElementById('dislikes'); 

    meter.max = Number(Likes.innerHTML) + Number(Dislikes.innerHTML); 
    meter.value = Number(Likes.innerHTML) - Number(Dislikes.innerHTML); 
})(); 

Fiddle

+0

Спасибо, чувак! Я предположил, что это сработает иначе, потому что met.value работало, когда я делал это по-другому. –

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

  • Нет связанных вопросов^_^