Dieses Problem ist so spezifisch, ich bin mir nicht sicher, dass jede Suche eine ähnliche Antwort finden würde, also frage ich, als ob es ein neues Problem ist.Funktion, die testet, wenn DIV zeigt nur funktioniert das zweite Mal
Das erwartete Verhalten:
- Klicken Sie die Taste 'Misole' macht div Meine Lösung sichtbar
- Klicken Sie die Taste 'YASS' div Meine Lösung versteckt und div YASS Lösung sichtbar
- Klicken Sie die Taste 'Tak' macht macht div YASS Lösung versteckt und div Takaken Lösung sichtbar
Dies funktioniert wie erwartet, erst nach dem ersten Mal klicken Sie auf alle drei Schaltflächen. Das erste Mal durch führt die folgenden (und wiederholbar durch die Seite zu aktualisieren):
Klicken Sie die Taste ‚Misole‘ div Meine Lösung sichtbar Click-Taste Blätter div sichtbar Meine Lösung ‚YASS‘ macht und div YASS Lösung sichtbar Click Button 'Tak' Blätter Divs Meine Lösung und YASS Lösung sichtbar und macht div Takaken Lösung sichtbar Klicken Sie auf 'MySol' verlässt divs YASS Lösung und Takaken Lösung sichtbar und macht div Meine Lösung versteckt Klicken Sie auf 'YASS' verlässt div Takaken Lösung sichtbar und macht div YASS Lösung versteckt Klicken Sie auf "Tak" macht div Takaken Lösung versteckt
Diese können b Das geschieht in beliebiger Reihenfolge mit dem gleichen Ergebnis. Nachdem das letzte div wieder ausgeblendet wurde, funktioniert die Funktion ordnungsgemäß und ein div ist gleichzeitig sichtbar. Ich verstehe nicht, was dieses Problem verursacht, und brauche Hilfe, um es zu korrigieren.
Jede Hilfe wird geschätzt. Hier
ist der Code:
function visInvis(id) {
var a = document.getElementById('mySol');
var b = document.getElementById('YASS');
var c = document.getElementById('Tak');
var e = document.getElementById(id);
if(e == a && e.style.display == 'none') {
b.style.display = 'none';
c.style.display = 'none';
}
if(e == b && e.style.display == 'none') {
a.style.display = 'none';
c.style.display = 'none';
}
if(e == c && e.style.display == 'none') {
a.style.display = 'none';
b.style.display = 'none';
}
if(e.style.display == 'block')
e.style.display = 'none';
else
e.style.display = 'block';
}
#mySol { display: none; }
#YASS { display: none; }
#Tak { display: none; }
<!DOCTYPE HTML>
<HTML>
<HEAD>
<TITLE>Sample Solution Page</TITLE>
</HEAD>
<BODY>
<TABLE align="left" valign="top" width="16%">
<TR><TH align="left" colspan="2">Puzzle Name</TH></TR>
<TR><TD>Width:</TD><TH width="50%">0</TH></TR>
<TR><TD>Height:</TD><TH width="50%">0</TH></TR>
<TR><TD>Boxes/Goals:</TD><TH width="50%">0</TH></TR>
<TR><TD colspan="2"><INPUT type="button" style="font-weight: bold;" onClick="visInvis('mySol');" value="My Solution"></TD></TR>
<TR><TD>Moves/Pushes:</TD><TH width="50%">0/0</TH></TR>
<TR><TD colspan="2"><INPUT type="button" style="font-weight: bold;" onClick="visInvis('YASS');" value="YASS Solution"></TD></TR>
<TR><TD>Moves/Pushes:</TD><TH width="50%">0/0</TH></TR>
<TR><TD colspan="2"><INPUT type="button" style="font-weight: bold;" onClick="visInvis('Tak');" value="Takaken Solution"></TD></TR>
<TR><TD>Moves/Pushes:</TD><TH width="50%">0/0</TH></TR>
</TABLE>
<TABLE align="right" valign="top" border="1" width="65%" height="600" cellspacing=0>
<CAPTION align="top"><B>Solution</B></CAPTION>
<TR><TD valign="top">
<DIV id=mySol>My Solution</DIV>
<DIV id=YASS>YASS Solution</DIV>
<DIV id=Tak>Takaken Solution</DIV>
</TD></TR>
</TABLE>
</BODY>
</HTML>
Muss ich alle Instanzen von a/b/c/e.style.display mit dieser Funktion ersetzen? – WayneCa
und in den if-Bedingungen sowie die Zuordnung Anweisungen? – WayneCa
Sie müssen es nur tun, wenn Sie den Stil lesen, nicht einstellen - es macht keinen Sinn, einen berechneten Stil zu definieren, er wird berechnet, indem alle CSS mit dem Inline-Stil verschmolzen werden. – Barmar