onMouseOver keine bestimmte Funktion auslösen
Ich habe ein sehr verwirrendes Problem und ich Frage mich, ob jemand kann etwas Licht auf, es.
Ich habe ein DIV-element ...
<div onmouseout="scrollRight();" onmouseover="scrollLeft();" id="rightScrollRegion" class="ScrollRegion"></div>
Und eine externe Skript-Datei, ...
function scrollLeft(){
document.getElementById('rightScrollRegion').style.background = "#0000ff";
}
function scrollRight(){
document.getElementById('rightScrollRegion').style.background = "#ff0000";
}
Das problem ist, dass das onmouseover-scheint nicht zum Aufruf der Funktion scrollLeft(); oder scrollRight(); I don ' T scheinen zu verstehen, wo ich einen Fehler gemacht.
Ich habe einige Tests um zu sehen, ob es etwas in der Funktion...
Fenster.onload = function(){
scrollLeft();
}
Arbeitet in der externen Datei und ändert die DIV-hintergrund, wenn die pageloads ... so funktioniert.
Habe ich auch versucht zu verändern, was heißt in onmouseover ...
<div onmouseover="alert('Hello');" id="rightScrollRegion" class="ScrollRegion"></div>
druckt ein alert-Fenster einfach nur gut.
Also dachte ich, vielleicht konnte ich nicht den hintergrund ändern mit onmouseover und so versuchte ich ...
<div onmouseover="this.style.background = '#0000ff'" id="rightScrollRegion" class="ScrollRegion"></div>
Und Veränderungen im hintergrund, wie erwartet.
Aber aus irgendeinem Grund kann ich nicht meine Funktion auslösen, auf die DIV. Ich habe die Suche überall im internet und ich habe keine waren nicht in der Lage zu finden, eine Lösung für das Problem. Ich kann nicht scheinen, um herauszufinden, was ich falsch mache. Ich habe externe Funktionen in anderen Seiten, aber nie mit einem onmouseover-also ich bin mir nicht sicher, was könnte das Problem sein.
Jegliche Hilfe würde sehr geschätzt werden.
Ist dein Skript geladen ist, bevor oder nach den div geladen wird?
-frenchie ich dachte über die Verwendung von jQuery, aber ich habe es nie benutzt, bevor. Ich könnte haben zu schauen es trotzdem. Das Endziel ist komplizierter, aber ich vereinfacht es für dieses post und so konnte ich versuchen zu isolieren, was schief läuft. -Asad-ich lade das Skript, bevor Sie etwas in das HTML geladen wird.
Haben Sie versucht, mit
addEventListener
?InformationsquelleAutor determinedto3d | 2012-11-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen Sie dies:
Vermeiden Sie die Verwendung von inline-event-Handler. Verwenden Sie die
addEventListener
Methode zum anfügen von Ereignishandlern zu Elementen.Können Sie versuchen, diese hier: http://jsfiddle.net/gkvq8/
Ja, Sie bulk-up Ihre HTML-und sind schwer zu pflegen, und sind im Gegensatz zu separation of concerns.
InformationsquelleAutor Asad Saeeduddin
Können Sie versuchen, diese:
hier ist das HTML-Element:
und Funktionen:
Sollten Sie Zugriff auf das element mit dem 'event' - Objekt. Es gibt bessere Wege, dies zu tun, sollten Sie die Forschung über 'dezent' javascript. hier
InformationsquelleAutor Ian Calderon
Wenn Sie können, verwenden Sie jQuery. Es wird Ihr Leben viel einfacher und Ihr code eine ganze Menge mehr flexibel.
Verwenden die jQuery-Bibliothek nur diese in Ihre HMTL:
Etwas wie dies zu tun:
Idealerweise verwenden Sie
addClass
undremoveClass
zum ändern der Hintergrundfarbe des div ' s, aber dies ist nur ein einfaches Beispiel-Lösung.1,5 Jahre später und mit viel mehr Erfahrung auf dem Buckel, ich sehe, dies ist eine unnötige Verwendung von jQuery, +1
Sie sind wellcome : D. Aussieht habe ich einen Tippfehler in meinem Kommentar, soll 92 kB ; ).
Wahrscheinlich waren die Referenzierung der minified und gzipped Größe 🙂
InformationsquelleAutor Ryan Brodie
Ihre Funktion ist im Gegensatz zu den ursprünglichen javascript-Funktion
so ändern Sie den Namen der Funktion, wie diese:
und diese
Ihre Funktion ist Gegenteil mit original JS-Funktion so ändern Sie den Namen der Funktion, nicht verwenden
scrollLeft()
undscrollRight()
Danke! Das klappte! Ich war mir nicht bewusst, dass es wurde eine Funktion aufgerufen, die bereits. Vielen, vielen Dank!
Diese (faid) sollte die Antwort sein, denke ich. Ist es richtig das problem erkannt, im Gegensatz zu nur mit einer potenziell bessere stilistische option. Es könnte die Kombination mit einem vorhandenen Namen und setzen, dass in einer externen Datei, da Sie sonst neu definieren Namen.
[Klärung früheren Kommentar da lief die Zeit ändern...] Diese (faid) sollte die Antwort sein, denke ich. Ist es richtig das problem erkannt, im Gegensatz zu nur mit einer potenziell bessere stilistische option. Das problem wurde möglicherweise die Kombination von re-mit einem vorhandenen Namen und setzen dieses neue definition in einer externen Datei (da Sie sonst neu definieren-Namen), so dass es nicht gesehen zum Zeitpunkt der Bindung.
InformationsquelleAutor faid