Problem getElementbyId
-
11-09-2019 - |
Frage
ich habe ein Problem mit getElementbyId, wie folgt:
<script type="text/javascript">
<!--
function show_links(locale) {
var box = document.getElementById(locale);
if(box.style.display == "none") {
box.style.display = "inline";
}
else {
box.style.display = "none";
}
}
//-->
</script>
<div class="link"><strong><a href="javascript:show_links(test);">Test</a></strong></div>
<div class="test"> Blah blah blah. This content comes and goes. </div>
So haben Sie den Code. Wenn ich den Link „Test“ klicken, sollte es den „bla bla bla Text“ verbergen. Wenn wieder geklickt haben, sollte es zeigen. Allerdings habe ich ein seltsames Problem. Ich verarbeitet den Code durch einen Debugger, und es scheint, dass die Linie var box = document.getElementById(locale);
nicht richtig funktioniert. box
wird auf null gesetzt. Kann jemand theoretisieren, warum?
Lösung
Sie haben mehrere Probleme. Zunächst werden die kritischsten:
- Der Wert, den Sie in die
show_links
Funktion sind vorbei ist die Variabletest
. Dies entsprichtundefined
so ist es nichts gehen lassen. - Das Element, das Sie durch seinen id zu finden versuchen, nicht über eine ID. Es hat nur eine Klasse.
Sie müssen das Element geben Sie versuchen, eine ID zu entsprechen und eine string anstelle eines nicht definierten Wert übergeben.
Dann werden die weniger Probleme.
- Sie testen die Inline-Anzeigestil Eigenschaft, aber sie setzen sie nicht standardmäßig aktiviert. Als Faustregel ist es besser, die
className
Eigenschaft twiddle und haben Ihre Stile in einem Stylesheet definiert. - Sie verwenden einen Javascript pseudo-URI statt progressive Erweiterung .
- Sie haben Kommentare um die Innenseite des Skripts gewickelt. Bei am besten , das ist sinnlos.
- Sie twiddling ein div zwischen
inline
undnone
, aber der Standard-Anzeigewert für ein div istblock
. Es gibt Gründe, ein div Stil Inline zu haben, aber die meiste Zeit sollten Sie ein anderes Element verwendet wird.
Andere Tipps
javascript:show_links(test);
test
ist ein unbekannter identifer. Wo haben definieren Sie es? Meinen Sie eine Zeichenfolge zu füttern?
<div class="test"> Blah blah blah. This content comes and goes. </div>
Es gibt kein Element mit der ID test
in dieser Linie. Verwenden Sie das richtige Attribut id
.