2016-09-29 51 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就起作用了。 –