在我的HTML中我有以下内容:
<div class="boxS" data-catTotal="19"></div>
<div class="boxS" data-catTotal="12"></div>
<div class="boxS" data-catTotal="4"></div>
<div class="boxS" data-catTotal="8"></div>
<div class="boxS" data-catTotal="4"></div>
<div class="boxS" data-catTotal="1"></div>
我的JavaScript如下:
var sizeBoxMax = null;
var sizeNew;
$(".boxS").each(function(){
var sizeBox = $(this).attr("data-catTotal");
alert($(this).attr("data-namez") + " " + sizeBox + " " + sizeBoxMax);
if (sizeBox < sizeBoxMax) {
sizeNew = (sizeBox / sizeBoxMax) * 100;
sizeNew = Math.ceil(sizeNew.toFixed(0));
$(this).attr("style", "width: " + sizeNew + "% !important");
}
else {
if (sizeBoxMax == null) {
sizeBoxMax = $(this).attr("data-catTotal");
}
// alert($(this).attr("data-namez") +" "+ sizeBox);
}
});
问题是即使if
一直是19,也没有访问sizeBoxMax
语句。发生的情况是19
,12
和1
正常工作,但其余部分不受影响。关于我能做什么的任何想法?我试过parseInt()
,但我得到NaN
。任何帮助将不胜感激!谢谢。
答案 0 :(得分:3)
需要将sizeBoxMax
初始值设为integer
而不是null
使用int值时,您可以在jsuna's fiddle中看到结果。
答案 1 :(得分:1)
除了Christopher Marshall's Answer,您应该使用jQuery's Data()方法。
var sizeBox = $(this).data("catTotal");
和
sizeBoxMax = $(this).data("catTotal");
每次尝试都将字符串转换为JavaScript值(包括布尔值,数字,对象,数组和null)。如果这样做不会更改值的表示,则只会将值转换为数字。例如,&#34; 1E02&#34;和&#34; 100.000&#34;等价于数字(数值100)但转换它们会改变它们的表示形式,因此它们被保留为字符串。字符串值&#34; 100&#34;转换为数字100。