IF / Else声明给我错误的号码

时间:2018-02-19 21:22:04

标签: javascript function if-statement

我试图设置变量" 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);




我做错了什么?

2 个答案:

答案 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);