“if (location.href != example.com/page1 || example.com/page2)" Change-CSS-element
Wenn ich diese ähnlichen JS-code (die 2 sofort unten), meine Ausgabe ist falsch oder nicht zeigen.
Hier ist meines codes in Frage:
if (location.href != "website.com/page1" || "website.com/page2")
{
element.style.backgroundColor='none';
}
oder mit != und !==
if (location.href != "website.com/page1" || location.href != "website.com/page2")
{
element.style.backgroundColor='none';
}
Hier ist, wie ich im mit es mit dem anderen code (vereinfacht)
<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>
Entweder passiert nichts, oder das element nicht richtig funktioniert auf anderen Seiten.
Was mache ich falsch?
Mehr Info: ich mache eine Tumblr Thema, und es gibt Seiten, die haben bestimmte posten mit unterschiedlichen Eigenschaften betrachtet, auf verschiedenen Seiten. Ich habe diesen code in die Spitze.
Jemand Schlug vor, Dieses: GELÖST
<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>
- Verwenden Sie location.pathname location.href enthält die Domäne
- Ein paar Ungleichheit Vergleiche wie, die, getrennt durch ein logisches "oder", wird immer wahr sein.
- Das problem ist in der Logik der if-Anweisungen. Die 3.
if
(der code in Frage) wird nie erreicht, denn wenn diehref
ist Seite1, es trifft der 2.if
, und wenn diehref
ist page2 es trifft der 1.if
, und wenn Ihr irgendetwas anderes, es trifft immer die 1.if
. Sie müssen, um Sieif/else if/else
Anweisungen, um die korrekte Ausgabe und setzen der 3.if
als die erste if-Anweisung, gefolgt von den anderen zwei. - Wie würden Sie das tun, @straker?
- Ich sehe deinen code ändern, tut mir Leid ich habe nicht mein Vorschlag klar genug. Was ich damit sagen will, war dies:
var element = document.getElementbyId('idElement'); if (location.href != "website.com/page1" || location.href != "website.com/page2") { element.style.backgroundColor='none'; } else if (location.href != "website.com/page1") { element.style.backgroundColor='blue'; } else { element.style.backgroundColor='green'; }
Anscheinend kann man nicht hinzufügen-code sehr einfach in die Kommentare... - Außerdem sollten Sie die
||
in&&
wie bereits erwähnt, die||
wird immer wahr sein. - Danke @straker! Ich löste es. Ich verwendet, wenn Anweisungen anstelle von if-else.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Abgesehen von offensichtlichen syntaktische Fehler (zum Beispiel, die Sie aufgehört ein schließendes Anführungszeichen nach website.com/page2), es gibt ein paar Dinge möchten Sie vielleicht zu tun, zu engen diese ein wenig nach unten.
Für eine Sache, möchten Sie vielleicht nur die Lage.href einmal und speichern Sie in einer Variablen. Während Sie dies tun, könnten Sie toLowerCase() auf, so dass Sie wissen, für bestimmte, Sie vergleichen äpfel mit äpfeln:
Ihre Logik ist auch ein bisschen interessant... zuerst sagst du, "Wenn wir nicht auf Seite1, verwenden blau. Wenn wir nicht auf Seite2, verwenden Sie grün. Wenn wir nicht auf Seite1 oder string ist, page2, verwenden Sie keine Farbe."
So, am Ende von allem, wird keine Farbe angezeigt, weil die Letzte Sache, die Sie sagen, ist zu klar, die Farbe, wenn Sie nicht auf page1 oder page2? Das Teil ist nicht sehr klar und ist wohl Teil des Problems, neben der syntax-Fehler. Beachten Sie, dass bei der Bewertung dieser Zeile:
du sagst "wenn die Lage.href ist nicht page1 ODER wenn String("website.com/page2") existiert"
Wenn Sie testen Lage.href in beiden Fällen, die Sie wollen:
da ich davon ausgehe, was du meinst zu sagen.
Also, versuchen Sie Ihr Skript, so etwas wie dieses:
location.pathname.toLowerCase()
ein und lassen das domain-Namen-aus dem Vergleich-strings.Sind Sie nicht schließen Sie die if-Anweisungen korrekt.
Diese:
Sollte wie folgt Aussehen:
und so:
Sollte wie folgt Aussehen:
Wenn es immer noch nicht funktioniert, schlage ich vor, tun dies an der Spitze Ihrer Funktion.
sehen, was Lage.href tatsächlich entspricht.
Bearbeiten
Nun statt dieses:
Muss es so Aussehen:
Wir sind langsam da!
location.href != "website.com/page1" || "website.com/page2
-- dieser prüft nur page2