Javascript大于且小于不正常运行

时间:2014-09-20 04:19:27

标签: javascript jquery

我正在使用一组函数从URL中提取图像。例如,如果URL是example.com/image/8/,则将加载第8个图像。

问题是,当URL小于10时,它不起作用(并且我的函数将varNumber设置为1,但是当它的10或更多时,功能正常工作。这是代码..

var totalCount = '<?php echo $total; ?>'; 
HREF = '<?php echo get_permalink($post->ID); ?>';

var url = window.location.pathname;
var urlsplit = url.split("/");
var imgNumber = urlsplit[5];


if (typeof imgNumber === 'undefined') {
       imgNumber = 1;
 } else if (imgNumber < 1) {
       imgNumber = 1;
       history.pushState('', '', HREF);

 } else if (imgNumber > totalCount) {
       alert("else if ( " + imgNumber + " > " + totalCount + ")");
       imgNumber = 1;
       history.pushState('', '', HREF);

 } else {
    $("#slider-"+imgNumber).removeClass("img-inactive");
    $("#slider-"+imgNumber).addClass("img-active");
    $("#slider-1").removeClass("img-active");
    $("#slider-1").addClass("img-inactive");
 }

正如您所看到的,上面的代码首先检查是否定义了varNumber,然后检查它是否小于1.然后检查它是否大于totalCount。这是搞砸的地方。我检查了我的浏览器控制台并运行警报以验证totalCount和imgNumber有变量。

要获得更好的示例,请参阅以下链接:

imgNumber&gt; totalCount不起作用...... http://badsentinel.com/2014/09/18/daily-giftastic-take-away-these-three-fingers-and-what-are-we-left-with-13-gifs/3/

imgNumber&gt; totalCount很好...... http://badsentinel.com/2014/09/18/daily-giftastic-take-away-these-three-fingers-and-what-are-we-left-with-13-gifs/10/

提前致谢

4 个答案:

答案 0 :(得分:1)

首先使用parseInt解析值,如下所示:

var imgNumber = parseInt(urlsplit[5],10);  //second parameter i.e '10' here is radix which is optional but it is advised to use it.

否则,当我们处理string时, javascript / jquery 值会被视为numbers,我们必须使用parseIntparseFloat对其进行解析

编辑: - 根据您的评论,请尝试以下操作:

var imgNumber = parseInt(urlsplit[5],10) || 0; //if parseInt() fails to parse value to int then it will return 0 value.

答案 1 :(得分:0)

抓住imgNumber时,请执行此操作:

var imgNumber = parseInt(urlsplit[5]);

urlsplit[5]会检索string,因此您需要将其解析为int

答案 2 :(得分:0)

在比较之前,您应该将imgNumber从从window.location.pathname检索到的字符串表示显式转换为数字。将字符串值与数字文字进行比较时,数字文字将转换为字符串而不是相反。

请参阅Why is string "11" less than string "3"?,了解他们为何要按此方式进行排序。

答案 3 :(得分:0)

urlsplit[5];更改为+urlsplit[5];,以便将其转换为数字。这是一个字符串。