2016-09-29 52 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.innerHTML500Dislikes.innerHTML50

出於某種原因,meter.max不當我使用Likes.innerHTMLDislikes.innerHTML;但是,當我將meter.max中的那些替換爲50050時,它確實有效。

我做錯了什麼?

回答

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函數()比使用人數好()? –

+0

@ChizbeJoe'數字'是非常好的。只要考慮你可以如何處理非數字值。另外:爲什麼我把基數(10)是因爲不包括它讓瀏覽器/平臺選擇基數。請參閱[MDN上的parseInt](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

謝謝兄弟!我認爲它會以另一種方式工作,因爲當我以另一種方式做到這一點時,meter.value就起作用了。 –