【问题标题】:How to match url in javascript using lastIndexOf?如何使用lastIndexOf在javascript中匹配url?
【发布时间】:2017-01-14 19:37:29
【问题描述】:

我是 javascript 新手,但我尝试有条件地在页面上显示按钮/链接,如果它与以下代码匹配某个 url:

LinkNode = document.getElementById("csv");
var url = document.documentURI
  if(document.documentURI.substr(url.lastIndexOf("/"+1)) == "/colleagues"){
    LinkNode.style.visibility= "visible";
  }
  else{
    LinkNode.style.visibility= "hidden";
}

谁能告诉我我做错了什么或如何匹配我以“/同事”结尾的网址,因为这不匹配?使用正则表达式可能更容易吗?

我如何测试以查看 document.documentURI.substr(url.lastIndexOf("/"+1)) 实际产生了什么?

【问题讨论】:

  • 要么删除 +1,要么将加 1 放在 lastIndexOf 括号外并更改比较字符串。

标签: javascript regex


【解决方案1】:

如果你不需要非常准确,你可以这样使用它:

if (document.documentURI.indexOf("/colleagues") !== -1) {
  LinkNode.style.visibility= "visible";
}
else {
  LinkNode.style.visibility= "hidden";
}

注意

如果“/同事”存在,这只会在您的整个 URI 中找到。这意味着,它不会在域中找到它,因为它有“/”。但可能是您有“www.domain.com/colleagues/sample”或“www.domain.com/sample/colleagues”,它会在both情况下输入if

【讨论】:

  • 谢谢,这也有效,但在我的情况下,我将在其他页面上的字符串的其他部分有“同事”,并且不想显示链接......但是知道这真的很有用: -)
  • 没问题。我在 stackoverflow 中找到了这篇文章,以回答您的问题“使用正则表达式可能更容易吗?” stackoverflow.com/questions/273789/…
【解决方案2】:

您可以使用正则表达式匹配:

var urlIndex = url.search("\/colleagues$");
if (urlIndex !== -1) {
  LinkNode.style.visibility= "visible";
} else {
  LinkNode.style.visibility= "hidden";
}

string.search 方法返回第一个匹配的索引,如果没有匹配则返回-1

至于测试,您可以使用几乎所有桌面浏览器都提供的调试工具,并在您要检查的行设置断点 另一种方法是添加console.log('some text', someValue) 并在浏览器控制台中查看输出

【讨论】:

  • 这也有效,谢谢,感谢有关故障排除的建议 :-)
【解决方案3】:

@MattE 只需更新您的代码

document.documentURI.substr(url.lastIndexOf("/")) == "/colleagues"

【讨论】:

  • @MattE 欢迎 :-)
猜你喜欢
  • 1970-01-01
  • 2011-11-06
  • 2010-11-22
  • 1970-01-01
  • 1970-01-01
  • 2013-07-19
  • 2016-08-31
  • 1970-01-01
  • 2011-02-01
相关资源
最近更新 更多