0

当我使用这些类似的 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> 
4

2 回答 2

2

除了明显的语法错误(例如,您在 website.com/page2 之后留下了一个右引号)之外,您可能还需要做一些事情来缩小范围。

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

var currLoc = location.href.toLowerCase();

你的逻辑也有点有趣......首先你说,“如果我们不在 page1,使用蓝色。如果我们不在 page2,使用绿色。如果我们不在 page1 或字符串是 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;
于 2013-10-16T19:18:34.077 回答
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")

我们正在慢慢到达那里!

于 2013-10-16T19:10:29.117 回答