我试图设置变量" productid"到URL中的产品编号并将其设置为另一个变量"产品 ID "。 if语句有效。 else语句是我的后备产品编号,如果网址中没有产品编号,则为我提供:tp:// localhost:63342 / IntegralWebsite / index.php。
这是我的代码:
function prod() {
let productid;
if (url.substring(url.lastIndexOf("ID=") + 3).split("#")[0]) {
productid = url.substring(url.lastIndexOf("ID=") + 3).split("#")[0]; //Get product ID from url
alert(productid);
// localStorage.setItem('productid', productid);
} else {
productid = 167160840221;
// localStorage.setItem('productid', productid);
alert(productid);
}
return productid;
}
let productID = prod();
alert(productID);

我做错了什么?
答案 0 :(得分:0)
它从未进入else语句。当lastIndexOf不匹配时,它返回-1,然后你添加一个3。那用于子串,所以从非匹配的URL中切掉几个字符。
答案 1 :(得分:0)
问题在于你在一条线上做了很多事情,这可能是一个问题。
url.lastIndexOf("ID=")
我的网址没有“ID =”返回-1,然后-1 + 3 = 2,所以子字符串正在切割前两个字符“ht”。
代码已更正(并经过优化):
//var url = "http://sadfsdf?ID=324123413#sdfasdf"; //IDURL
var url = "http://sadfsdf"; //NOIDURL
function prod() {
let productid = 167160840221,
index = url.lastIndexOf("ID=");
if (index >= 0) {
let urlProductId = url.substring(index + 3).split("#")[0];
if (urlProductId) {
productid = urlProductId;
}
}
return productid;
}
let productID = prod();
alert(productID);