Javascript大于和小于不能正常工作

Javascript great than and less than not functioning correctly

本文关键字:工作 常工作 大于 小于 不能 Javascript      更新时间:2023-09-26

我正在使用一组函数从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 和 imgNumber 是否有变量。

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

img数字>总数不起作用...http://badsentinel.com/2014/09/18/daily-giftastic-take-away-these-three-fingers-and-what-are-we-left-with-13-gifs/3/

img数字>总数工作正常...http://badsentinel.com/2014/09/18/daily-giftastic-take-away-these-three-fingers-and-what-are-we-left-with-13-gifs/10/

提前致谢

首先用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.

否则,在javascript/jquery中,值被视为string当我们处理numbers时,我们必须使用parseIntparseFloat来解析它。

编辑:- 根据您的评论尝试:

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

抓取imgNumber时,请改为执行以下操作:

var imgNumber = parseInt(urlsplit[5]);

urlsplit[5]会检索一个string,所以你需要把它解析成一个int

比较之前,应将imgNumberwindow.location.pathname检索到的字符串表示形式显式转换为数字。 将字符串值与数字文本进行比较时,数字文本将强制转换为字符串,而不是相反。

请参阅为什么字符串">

11"小于字符串"3"?以明确他们为什么以这种方式排序。

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