JavaScript如果少于不工作

时间:2014-05-06 20:58:15

标签: javascript jquery if-statement custom-data-attribute

在我的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语句。发生的情况是19121正常工作,但其余部分不受影响。关于我能做什么的任何想法?我试过parseInt(),但我得到NaN。任何帮助将不胜感激!谢谢。

2 个答案:

答案 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。