Как я могу отключить элемент, если URL содержит определенную строку? - PullRequest
0 голосов
/ 19 сентября 2018

 <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>

И я хотел бы отключить / скрыть Second [div] (id = "test-id2"), когда URL страницы содержит строку? Fullpost.

Так, например: если мой URL-адрес 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 голосов
/ 19 сентября 2018

добавить прослушиватель для этого элемента - вы хотите, чтобы его запретили только для конкретной страницы

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);
0 голосов
/ 19 сентября 2018

Похоже, что когда я его запускаю, 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"))
{
0 голосов
/ 19 сентября 2018

Вы должны использовать indexOf () вместо search ()

let element = document.getElementById("test-id2");
var url = window.location.href;
if(url.indexOf("?fullpost") > -1) 
{ 
  element.parentNode.removeChild(element);
}
0 голосов
/ 19 сентября 2018

Я исправил это с помощью Regex, проверьте следующий код

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 как параметр.Если ваш URL был таким http://www.example.com/post_1.html?anything&fullpost, он будет работать.

0 голосов
/ 19 сентября 2018

Попробуйте вместо этого

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

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