URL包含特定字符串时如何禁用元素?

时间:2018-09-18 22:58:50

标签: javascript html css blogger blogspot

 <div class="test-class">
    <div class="test-class1" id="test-id1">hello 1</div>
     <div class="test-class2" id="test-id2">hello 2</div>             
    <div class="test-class3" id="test-id3">hello 3</div>
  </div>

当页面URL包含字符串“ fullpost”时,我想禁用/隐藏第二个[div](id =“ test-id2”)。

例如,如果我的网址是http://www.example.com/post_1.html?fullpost,则test-id2 div不应处于活动状态。

例如,如果URL仅是http://www.example.com/post_1.html,则test-id2 div应该处于活动状态。

<script>
let element = document.getElementById("test-id2");

if(window.location.href.search("?fullpost") > -1){
element.parentNode.removeChild(element);
}
</script>

我的脚本不起作用。

5 个答案:

答案 0 :(得分:0)

试试看

<script>
  let element = document.getElementById("test-id2");

  if(window.location.href.includes("?fullpost")){
     element.parentNode.removeChild(element);
  }
</script>

答案 1 :(得分:0)

您应该使用indexOf()而不是search()

let element = document.getElementById("test-id2");
var url = window.location.href;
if(url.indexOf("?fullpost") > -1) 
{ 
  element.parentNode.removeChild(element);
}

答案 2 :(得分:0)

我使用正则表达式修复了它,请检查下一个代码

var element = document.getElementById("test-id2");
var reg = /(\?|\&)?fullpost/g;
var url = window.location.href;
if (reg.exec(url) !== null) {
    element.parentNode.removeChild(element);
}

这是快照https://output.jsbin.com/cataxix?fullpost的整页

正则表达式将检查URL是否包含fullpost作为第一个参数,或者是否在URL中的任何位置作为参数。 如果您的网址是http://www.example.com/post_1.html?anything&fullpost这样的网址,那么它将起作用。

答案 3 :(得分:0)

当我运行它时,它看起来像window.location.href.search(“?fullpost”)自然被解析为正则表达式。因此,您需要转义“?”

<script>
let element = document.getElementById("test-id2");

if(window.location.href.search("/?fullpost") > -1){
element.parentNode.removeChild(element);
}
</script>

另一种方法是使用include()

if(window.location.href.includes("?fullpost"))
{

答案 4 :(得分:0)

在该元素上添加侦听器-您希望它仅针对特定页面进行阻止

let ELM = document.getElementById("test-id2");
ELM.addEventListener("click",(ev) => {
   if(window.location.href.test(/\?fulpost/)){
     //ev.preventDefault(); // for <a></a>
     ev.stopImmediatePropagation(); // this will prevent any click_event from execution
   }
},true);