繁体   English   中英

JavaScript,如果不起作用

[英]JavaScript If Less Than Not Working

在我的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);
    }

});

问题是,即使sizeBoxMax为19,也不会访问if语句。 什么情况是, 1912 ,和1是正确的工作,但其余不受影响。 关于我能做什么的任何想法? 我试图parseInt()但我刚得到NaN 任何帮助将不胜感激! 谢谢。

需要将sizeBoxMax初始值设置为integer而不是null

使用int值时,可以看到结果在jsuna的小提琴中工作。

除了Christopher Marshall的Answer,您还应该使用jQuery的Data()方法。

var sizeBox = $(this).data("catTotal");

sizeBoxMax = $(this).data("catTotal");

会尝试将字符串转换为JavaScript值(包括布尔值,数字,对象,数组和null)。 仅在不更改值表示形式的情况下,将值转换为数字。 例如,“ 1E02”和“ 100.000”等价于数字(数值100),但对其进行转换将改变其表示形式,因此它们保留为字符串。 字符串值“ 100”将转换为数字100。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM