Javascript比正常运行要好,比不上正常运行
我正在使用一组函数从URL中提取图像。例如,如果URL为example.com/image/8/将加载第8个图像 问题是,当URL小于10时,它不起作用(并且我的函数将varNumber设置为1,但当URL大于或等于10时,功能正常。下面是代码Javascript比正常运行要好,比不上正常运行,javascript,jquery,Javascript,Jquery,我正在使用一组函数从URL中提取图像。例如,如果URL为example.com/image/8/将加载第8个图像 问题是,当URL小于10时,它不起作用(并且我的函数将varNumber设置为1,但当URL大于或等于10时,功能正常。下面是代码 var totalCount = '<?php echo $total; ?>'; HREF = '<?php echo get_permalink($post->ID); ?>'; var url = window.l
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");
}
var totalCount='';
HREF='';
var url=window.location.pathname;
var urlspilt=url.split(“/”);
var imgNumber=urlspilt[5];
如果(imgNumber的类型=='undefined'){
imgNumber=1;
}否则如果(imgNumber<1){
imgNumber=1;
history.pushState(“”,”,HREF);
}否则如果(imgNumber>totalCount){
警报(“如果(“+imgNumber+”>“+totalCount+”)则为else);
imgNumber=1;
history.pushState(“”,”,HREF);
}否则{
$(“#滑块-”+imgNumber).removeClass(“img非活动”);
$(“#滑块-”+imgNumber).addClass(“img活动”);
$(“#slider-1”).removeClass(“img活动”);
$(“#slider-1”).addClass(“img非活动”);
}
正如您所见,上面的代码首先检查varNumber是否已定义,然后检查它是否小于1。然后检查它是否大于totalCount。这就是它出错的地方。我检查了我的浏览器控制台并运行了警报,以验证totalCount和imgNumber是否有变量
要获得更好的示例,请参见以下链接:
imgNumber>totalCount不起作用。。。
imgNumber>totalCount工作正常。。。
提前感谢在抓取
imgNumber
时,请执行以下操作:
var imgNumber = parseInt(urlsplit[5]);
urlspilt[5]
将检索一个字符串
,因此您需要将其解析为int首先使用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中,当我们处理numbers
时,值被视为string
,我们必须使用parseInt
或parseFloat
解析它
编辑:-根据您的评论,尝试以下操作:
var imgNumber = parseInt(urlsplit[5],10) || 0; //if parseInt() fails to parse value to int then it will return 0 value.
在比较之前,应将imgNumber
从window.location.pathname
检索的字符串表示形式显式转换为数字。将字符串值与数字文字进行比较时,数字文字将转换为字符串,而不是相反
请参阅,以了解它们为何以这种方式排序。更改urlspit[5];
为+urlspit[5]所以它被转换成一个数字。它是一个字符串。你给我的代码解决了这个问题。。但是现在它又产生了另一个问题。现在当我转到根链接时,它没有定义imgNumber。你能告诉我如果(typeof imgNumber==='undefined'){imgNumber=1;}
需要更改为。我猜typeof
也用于字符串,所以您能告诉我int的值是多少吗?谢谢。非常感谢。因为它将var设置为零,所以我必须更改if语句以检查它是否设置为0而不是未定义。否则它将进入无限循环,因为我的代码不能有“0”图像。它必须介于1和totalcount之间。但看起来它现在可以工作了。干杯!!