使用javascript检查url中的数字?

使用javascript检查url中的数字?,javascript,url,hash,Javascript,Url,Hash,我在网站中有一个图库,每个图库图像都由一个url表示,如下所示: 。 . . . 我创建了一个条件语句来防止用户访问无效的url var galleryNum = window.location.hash.substring(1); if( typeof(galleryNum) == "string" || typeof(galleryNum) == "NaN" ){ console.log('this is not a number'); }else if(typeof(ga

我在网站中有一个图库,每个图库图像都由一个url表示,如下所示:

。 . . .

我创建了一个条件语句来防止用户访问无效的url

var galleryNum = window.location.hash.substring(1);

if( typeof(galleryNum) == "string" || typeof(galleryNum) == "NaN" ){
    console.log('this is not a number');
}else if(typeof(galleryNum) == "number"){
    console.log('this is a number');
}

但这不起作用,无论我输入数字还是字符串,我从window.location.hash.substring(1)获取的值都将始终是字符串。

如果要获取数字,应使用:

parseInt(galleryNum,10)
如果要检查galleryNum是否为数字,可以使用:

isNaN(parseInt(galleryNum,10))

如果您想获取号码,应使用:

parseInt(galleryNum,10)
如果要检查galleryNum是否为数字,可以使用:

isNaN(parseInt(galleryNum,10))
尝试使用
.test()

尝试使用
.test()

没有“NaN”类型。事实上,尽管NaN代表非数字,但它实际上是一个数字:
typeof NaN===“Number”

但是,您可以使用
isNaN()
测试NaN。 要测试从URL返回的字符串是否可以转换为数字,请使用parseInt:

var galleryNum = parseInt(window.location.hash.substring(1),10);
if (typeof(galleryNum) === 'number' && !isNan(galleryNum)) {
    // got a number here
}
没有“NaN”类型。事实上,尽管NaN代表非数字,但它实际上是一个数字:
typeof NaN===“Number”

但是,您可以使用
isNaN()
测试NaN。 要测试从URL返回的字符串是否可以转换为数字,请使用parseInt:

var galleryNum = parseInt(window.location.hash.substring(1),10);
if (typeof(galleryNum) === 'number' && !isNan(galleryNum)) {
    // got a number here
}

您应该添加基数参数:
parseInt(galleryNum,10)
是的,您确实应该使用基数参数,因为它在旧版本的ecmascript中会执行一些不需要的操作。您应该添加基数参数:
parseInt(galleryNum,10)
是的,您确实应该使用基数参数,因为它在旧版本的ecmascript中做了一些不需要的事情。这是事实,但它仍然不能解决他的问题。您是对的。我把注意力集中在他问题中一个不相关的部分。没关系,他知道任何一种方式都是好的。这也许更适合作为评论。这是真的,但它仍然不能解决他的问题。你是对的。我把注意力集中在他问题中一个不相关的部分。没关系,他知道任何一种方式都是好的。不过,它可能更适合作为评论。