“if(location.href!= example.com/page1 || example.com/page2)”更改CSS元素

时间:2013-10-16 18:59:55

标签: javascript html css location location-href

当我使用这些类似的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 个答案:

答案 0 :(得分:2)

除了明显的语法错误(例如,你在网站http://page2之后留下了一个右引号),你可能还想做一些事情,把它缩小一点。

首先,您可能只想获取location.href一次并将其存储在变量中。当你这样做的时候,你可以在它上面使用toLowerCase(),这样你就可以确定你在比较苹果和苹果:

var currLoc = location.href.toLowerCase();

你的逻辑也有点有趣......首先你说,“如果我们不在第1页,请使用蓝色。如果我们不在第2页,请使用绿色。如果我们不在第1页或string是page2,不使用颜色。“

所以,在这一切的最后,没有颜色出现,因为你说的最后一件事就是如果你不在page1或page2上那么清除颜色?除了语法错误之外,该部分并不十分清楚,可能是问题的一部分。请注意,在评估此行时:

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

你说“如果location.href不是page1或者如果String(”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;

答案 1 :(得分:0)

您没有正确关闭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")

我们正慢慢到那里来!