2016-05-21 13 views
0

arbeiten ich Probleme mit der CSS-Eigenschaft mit> Anzeige> Auf meiner Seite I 4 div Elemente mit display = keine Eigenschaft versteckt haben jetzt mit Hilfe von JavaScript Ich möchte ich jede Eigenschaft separat angezeigt werden Ich bin in der Lage, die Elemente zu verstecken und kann sie beim Klicken erscheinen, aber es wird nie angezeigt, wie es sein sollte alle entweder Inline und die Formatierung ist falsch Ich habe eine Menge von Werten für die Anzeige verwendet zB: Inline, Block etc, aber ich immer noch kann es nicht richtig , wenn jemand mich schätzen krank helfen kann, es der Code ich verwende ist:CSS-Eigenschaft „display“ nicht richtig

<script type="text/javascript"> 
document.getElementById("a").style.display="none"; 
document.getElementById("b").style.display="none"; 
document.getElementById("c").style.display="none"; 
document.getElementById("d").style.display="none"; 
function myFunctionA() { 
document.getElementById("a").style.display="block"; 
document.getElementById("b").style.display="hidden"; 
document.getElementById("c").style.display="hidden"; 
document.getElementById("d").style.display="hidden"; 
} 
function myFunctionB() { 
document.getElementById("b").style.display="initial"; 
document.getElementById("a").style.display="hidden"; 
document.getElementById("c").style.display="hidden"; 
document.getElementById("d").style.display="hidden"; 
} 
function myFunctionC() { 
document.getElementById("c").style.display="initial"; 
document.getElementById("a").style.display="hidden"; 
document.getElementById("b").style.display="hidden"; 
document.getElementById("d").style.display="hidden"; 
} 
function myFunctionD() { 
document.getElementById("d").style.display="initial"; 
document.getElementById("a").style.display="hidden"; 
document.getElementById("b").style.display="hidden"; 
document.getElementById("c").style.display="hidden"; 
} 
</script> 

die Seite, auf der ich das Ergebnis zu sehen ist:

http://theinformant.to/food-drink/

, wenn Sie auf den Namen klicken Kochen zB Getränke, die Sie werden sehen, was über

+0

bearbeiten Bitte geben Sie die Frage mit spezifischeren Detail auf, was Sie wollen. Sie sagten, dass "es nie so aussieht, wie es sollte", aber Sie erklären nie, wie es angezeigt werden sollte. Wenn ich die Seite anschaue, scheint sie korrekt zu funktionieren. –

Antwort

1

spreche Es sollte display='none' statt display='hidden' sein.

+0

danke für das zeigen, dass ich änderte es aber immer noch nicht das Problem gelöst. Das Problem ist, dass ich nicht weiß, welche Eigenschaft ich verwenden sollte, um es richtig anzuzeigen, wenn Sie darauf klicken. Im Moment ist alles falsch formatiert. – user2296604

+0

Verwenden Sie auch Block anstelle von initial. – dejakob

4

Ihr Code ist sehr repetitiv. Versuche, es TROCKEN zu machen (wiederhole dich nicht). All das, was Sie brauchen:

function myFunction(id){ 
 
    var elements = document.querySelectorAll('.element'); 
 
    for(var i=0; i<elements.length; i++){ 
 
    elements[i].style.display = elements[i].id == id ? 'block' : 'none'; 
 
    } 
 
}
.element{display: none;} #a{display: block;}
<button onclick="myFunction('a')">Show A</button> 
 
<button onclick="myFunction('b')">Show B</button> 
 
<button onclick="myFunction('c')">Show C</button> 
 
<button onclick="myFunction('d')">Show D</button> 
 

 
<div id="a" class="element">A</div> 
 
<div id="b" class="element">B</div> 
 
<div id="c" class="element">C</div> 
 
<div id="d" class="element">D</div>

+1

Daumen hoch für die Erwähnung von DRY – dejakob

+0

danke für die Antwort, aber Sie verwenden jquery, wenn ich nicht falsch liege. Mit Ihrem Beispiel habe ich das Problem nicht gelöst. Schauen Sie sich die Seite jetzt an und Sie werden den Fehler sehen. danke – user2296604

+0

gibt es eine Möglichkeit, ich kann dies mit Javascript – user2296604

0

Vorschlag. Ich sehe in der Ansicht Quelle, die Sie jQuery verwenden. Verwenden Sie $('#domelementname') anstelle von document.getElementById("a"). Es gibt mehr Repetiercode.

+0

benutze ich nicht jquery ich benutze javascript – user2296604

+0

rechtsklicken und seitenquelle anzeigen. Sie sollten sehen, dass jQuery auf Ihrer Seite erwähnt wird. Sie haben es. – Kurkula

+0

Bitte schauen Sie jetzt – user2296604

1

Sie müssen wahrscheinlich zwischen display:hidden und display:block umschalten, wie andere gesagt haben. Erwägen Sie, Klassennamen zu verwenden, anstatt die Stile direkt zu aktualisieren. Dadurch wird Ihr Code in Zukunft einfacher zu verwalten sein. Siehe auch @ blex's Antwort, da er einen guten Ratschlag hat, den Code weniger repetitiv zu machen.

Hier ist ein Beispiel von Klassen statt Stile direkt ändern:

/* Hide an element */ 
document.getElementById('a').className = 'hide'; 

/* Show an element */ 
document.getElementById('a').className = ''; 

Wenn Sie mehr als eine Klasse auf die Elemente verwenden müssen, versuchen classList.add('hide') und classList.remove('hide') statt.

Dann in Ihrem CSS, könnten Sie so etwas wie folgt verwenden:

.hide { 
    display: none; 
} 
+0

Ich benutze den Code von @blex und ich habe immer noch das gleiche Problem. der display block funktioniert, aber es zeigt nicht das ergebnis wie es sollte aber stattdessen es ist es in einer spalte anzeigen bitte schauen sie und lassen sie mich wissen, wenn sie eine idee haben. Ich habe versucht, Block mit anderen Dingen zu ersetzen, aber immer noch das gleiche Ergebnis. – user2296604