"if (location.href!= example.com/page1 || example.com/page2)" Изменить элемент CSS

Когда я использую подобный код JS (2 сразу ниже), мой вывод неверен или не отображается. Вот мои коды под вопросом:

if (location.href != "website.com/page1" || "website.com/page2")
   {
     element.style.backgroundColor='none';
   }

или с!= и!==

if (location.href != "website.com/page1" || location.href != "website.com/page2")
   {
     element.style.backgroundColor='none';
   }

Вот как я использую его с другим кодом (упрощенно)

<script>
var element = document.getElementbyId('idElement');

if (location.href != "website.com/page1")
   {
     element.style.backgroundColor='blue';
   }
if (location.href != "website.com/page2")
   {
     element.style.backgroundColor='green';
   }
 //HERE'S WHERE I PUT IT
if (location.href != "website.com/page1" || "website.com/page2")
   {
     element.style.backgroundColor='none';
   }
 </script>

Либо ничего не происходит, либо элемент не работает должным образом на других страницах.

Что я делаю неправильно?

Больше информации: я делаю тему Tumblr, и есть страницы, которые будут иметь определенные сообщения с разными характеристиками при просмотре на разных страницах. Я должен иметь этот код в топе.

Кто-то предложил это: решено

<script>
     window.onload = function ()

 var element = document.getElementbyId('idElement');

 if (location.href != "website.com/page1" && location.href != "website.com/page2") 
    {
       element.style.backgroundColor='none'; 
    } 
  if (location.href == "website.com/page1") 
    {
       element.style.backgroundColor='blue'; 
    }
  if (location.href == "website.com/page2") 
        { 
       element.style.backgroundColor='green'; 
    }

</script> 

2 ответа

Помимо очевидной синтаксической ошибки (например, вы закрыли кавычку после website.com/page2), есть несколько вещей, которые вы можете захотеть сделать, чтобы немного сузить это.

Во-первых, вы можете получить только один раз location.href и сохранить его в переменной. Пока вы это делаете, вы можете использовать toLowerCase(), чтобы вы точно знали, что сравниваете яблоки с яблоками:

var currLoc = location.href.toLowerCase();

Ваша логика также немного интересна... сначала вы говорите: "Если мы не на странице 1, используйте синий. Если мы не на странице 2, используйте зеленый. Если мы не на странице 1, или строка - страница 2, не используйте цвет."

Итак, в конце всего этого, цвет не отображается, потому что самое последнее, что вы говорите, это очистить цвет, если вы не на странице 1 или 2? Эта часть не очень понятна и, вероятно, является частью проблемы, в дополнение к синтаксическим ошибкам. Обратите внимание, что при оценке этой строки:

if (location.href != "website.com/page1" || "website.com/page2)

Вы говорите: "если location.href не является page1 ИЛИ если существует строка ("website.com/page2")"

Если вы тестируете location.href в обоих случаях, вы хотите:

if (location.href != "website.com/page1" && location.href != "website.com/page2")

как я предполагаю, что вы хотите сказать.

Итак, попробуйте изменить ваш скрипт на что-то вроде этого:

var element = document.getElementbyId('idElement');
var currLoc = location.href.toLowerCase();

// let's save this in a var, too, so you're only changing color once!
var toColor = "none"; 

if (currLoc != "website.com/page1") {
    toColor = 'blue';
}
if (currLoc != "website.com/page2") {
    toColor = 'green';
}
//HERE'S WHERE I PUT IT
if (currLoc != "website.com/page1" && currLoc != "website.com/page2") {
    toColor = 'none';
}

element.style.backgroundColor = toColor;

Вы не закрываете свои операторы if должным образом.

Это:

if (location.href != "website.com/page1" || "website.com/page2)

Должно выглядеть так:

if (location.href != "website.com/page1" || "website.com/page2")

и это:

if (location.href != "website.com/page1" || location.href != "website.com/page2)

Должно выглядеть так:

if (location.href != "website.com/page1" || location.href != "website.com/page2")

Если это все еще не работает, я предлагаю сделать это в верхней части вашей функции.

alert(location.href);

и увидеть, что location.href фактически равно.

редактировать

Теперь вместо этого:

(location.href != "website.com/page1" || "website.com/page2")

Это должно выглядеть так:

(location.href != "website.com/page1" || location.href != "website.com/page2")

Мы медленно добираемся туда!

Другие вопросы по тегам