Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript比正常运行要好,比不上正常运行_Javascript_Jquery - Fatal编程技术网

Javascript比正常运行要好,比不上正常运行

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

我正在使用一组函数从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.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之间。但看起来它现在可以工作了。干杯!!