несколько ссылок в инструкции if

#javascript #if-statement #hyperlink

#javascript #if-инструкция #гиперссылка

Вопрос:

У меня есть скрипт, который указывает, что определенный элемент не отображается на определенной странице. Ниже приведен код, который я использовал:

    <script type="text/javascript">
   function callOnPageLoad()
   {
   var url = window.location.href;
   if(url == "http://www.exampledomain.com")
   {
   document.getElementById('rolex').style.display = 'none';
   }
   }
   </script>     
  

Однако мне нужно добавить еще несколько URL-адресов в инструкцию if, как правильно это сделать?

Большое спасибо

Комментарии:

1. Топ-10 лучших книг по JavaScript, которые следует прочитать новичкам

2. Множество потенциальных проблем с этим кодом Хью, попробуй использовать некоторые из них с заглавной буквы в адресной строке, удалите www, отключите JS и т.д. И т.п.

Ответ №1:

Я предпочитаю генерировать ассоциативный массив, а затем проверять, установлена ли строка. Он может быть получен из AJAX, из другого скрипта и т.д. И не закодирован в градкоде if

    <script type="text/javascript">
   var urlArray = { "http://www.exampledomain.com" : true, "http://www.exampledomain.com/foobar.html" : true };
   function callOnPageLoad()
   {
   var url = window.location.href;
   if( urlArray[url] )
   {
   document.getElementById('rolex').style.display = 'none';
   }
   }
   </script>     
  

Комментарии:

1. Обратите внимание, что объекты по умолчанию имеют множество свойств, поэтому «URL», такие как toString или eval , также будут приниматься. Чтобы предотвратить это, используйте if (urlArray.hasOwnProperty(url)) вместо if (urlArray[url]) .

2. 1 для этого, я думаю, это может быть быстрее, чем другие предложения (несколько or, в operator, для цикла). Конечно, разница в производительности не создает проблемы, но…

Ответ №2:

 if(url == "http://www.exampledomain.com" || url == "http://www.anotherdomain.com")
{
}
  

Ответ №3:

Добавьте больше условий в блок if:

    <script type="text/javascript">
   function callOnPageLoad()
   {
   var url = window.location.href;
   if(url == "http://www.exampledomain.com" || url == "anotherurl" || url == "andanother")
   {
   document.getElementById('rolex').style.display = 'none';
   }
   }
   </script>
  

Ответ №4:

создайте массив URL-адресов и выполните итерацию

 function callOnPageLoad()
{
   var urls = [
      "http://www.exampledomain.com",
      "http://www.exampledomain2.com"
   ];
   var url = window.location.href;
   for ( var i=0; i < urls.length; i   ) {
      if(url == urls[i])
      {
          document.getElementById('rolex').style.display = 'none';
          break;
      }
   }   

}
  

Комментарии:

1. я думаю, что лучше использовать оператор «in», чем использовать цикл

2. Есть ли у вас какие-либо тесты, которые «in» выполняются быстрее, чем цикл for?

Ответ №5:

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

использование длинных операторов if не рекомендуется, потому что вы можете потерять символ здесь или немного логики там

Если ваши URL-адреса указывают на внешние URL-адреса или соответствуют другим шаблонам, чтобы вы могли отличить их от других URL-адресов, вы можете использовать его без массива.

Ответ №6:

  function callOnPageLoad(type)

    {
        var url = window.location.href;
             var urls=new array("http://www.exampledomain1com","http://www.exampledomain2.com");    


        if(url in urls){
            document.getElementById('rolex').style.display = 'none';
        }
    }
  

Комментарии:

1. Покажите мне место, где это тогда работает? Это не означает: jsfiddle.net/KooiInc/nTyms

Ответ №7:

if(url == "http://www.exampledomain.com" || url =="http://www.url2.com" || url == "http://www.url3.com") и так далее … ?