onMouseOver pas de déclenchement fonction spécifique
Je vais avoir un problème très déroutant et je me demandais si quelqu'un pourrait jeter de la lumière sur elle.
J'ai un élément DIV ...
<div onmouseout="scrollRight();" onmouseover="scrollLeft();" id="rightScrollRegion" class="ScrollRegion"></div>
Et un fichier de script externe qui a ...
function scrollLeft(){
document.getElementById('rightScrollRegion').style.background = "#0000ff";
}
function scrollRight(){
document.getElementById('rightScrollRegion').style.background = "#ff0000";
}
Le problème est que le onmouseover ne semble pas appeler la fonction scrollLeft(); ou scrollRight(); je n'ai pas l'air de comprendre où j'ai fait une erreur.
J'ai fait quelques tests pour voir si elle avait quelque chose dans la fonction...
fenêtre.onload = function(){
scrollLeft();
}
Travaille dans le fichier externe et les changements de la DIV à l'arrière-plan lorsque l'pageloads ... donc en fonction des œuvres.
J'ai aussi essayé de changer ce qu'on appelle en onmouseover ...
<div onmouseover="alert('Hello');" id="rightScrollRegion" class="ScrollRegion"></div>
imprime une fenêtre d'alerte de l'amende juste.
Alors j'ai pensé que peut-être je ne pouvais pas changer le fond à l'aide d'onmouseover j'ai donc essayé ...
<div onmouseover="this.style.background = '#0000ff'" id="rightScrollRegion" class="ScrollRegion"></div>
Et que les changements de l'arrière-plan comme prévu.
Mais pour une raison que je ne peux pas obtenir ma fonction de déclencheur sur la DIV. J'ai recherche sur internet et je n'ai pas été incapables de trouver une solution à la question. Je n'arrive pas à trouver ce que je fais mal. J'ai utilisé à l'extérieur des fonctions dans d'autres sites, mais jamais avec un onmouseover donc je ne suis pas sûr de ce que pourrait être la question.
Toute aide serait grandement appréciée.
Est votre script chargé avant ou après le div est chargé?
-frenchie j'ai pensé à l'aide de jQuery, mais je n'ai jamais utilisé avant. Je pourrais avoir à y regarder de si. L'objectif final est plus compliquée, mais je l'ai simplifié en bas de ce post et pour que je puisse essayer d'isoler ce qui n'allait pas. -Asad je charge le script avant que quoi que ce soit dans le code HTML est chargé.
Avez-vous essayé d'utiliser
addEventListener
?
OriginalL'auteur determinedto3d | 2012-11-17
Vous devez vous connecter pour publier un commentaire.
Essayez ceci:
Éviter d'utiliser inline gestionnaires d'événements. Utiliser le
addEventListener
méthode pour fixer les écouteurs d'événement à des éléments.Vous pouvez l'essayer ici: http://jsfiddle.net/gkvq8/
Oui, ils en vrac vers le haut de votre code HTML et qui sont difficiles à maintenir, et sont l'antithèse de la séparation des préoccupations.
OriginalL'auteur Asad Saeeduddin
Vous pouvez essayer ceci:
ici est l'Élément HTML:
et les fonctions:
Vous devez accéder à l'élément en utilisant l '"événement" de l'objet. Il y a de meilleures façons de le faire, vous devriez la recherche sur 'discrète' javascript. ici
OriginalL'auteur Ian Calderon
Si vous le pouvez, utilisez jQuery. Il rendra votre vie beaucoup plus facile et votre code d'un ensemble beaucoup plus souple.
À utiliser la bibliothèque jQuery juste de les inclure dans votre HMTL:
Quelque chose comme cela va faire:
L'idéal serait d'utiliser
addClass
etremoveClass
de changer la couleur de fond de la div, mais ce n'est qu'un simple exemple de solution.1.5 ans plus tard et avec beaucoup plus d'expérience à mon actif, je peux voir ce qui est inutile pour l'utilisation de jQuery, +1
Vous êtes à la wellcome : D. dirait que j'ai une erreur de frappe dans mon commentaire, doit être 92 kB ; ).
Probablement une référence de la minifiés et format taille 🙂
OriginalL'auteur Ryan Brodie
votre fonction est opposée à l'origine de la fonction javascript
donc changer le nom de la fonction comme ceci:
et ce
votre fonction est opposé avec l'original JS fonction, de manière à changer le nom de la fonction, ne pas utiliser de
scrollLeft()
etscrollRight()
Merci! Qui a travaillé! Je n'étais pas au courant il y a une fonction appelée déjà. Merci beaucoup!
Ce (faid) devrait être la réponse je pense. Il a correctement identifié le problème plutôt que de simplement en offrant potentiellement une meilleure option stylistique. Il pourrait être la combinaison de l'utilisation d'un nom existant et le mettre dans un fichier externe, puisque vous pouvez sinon redéfinir les noms.
[clarifier commentaire précédent depuis a couru hors de l'heure de modification...] Ce (faid) devrait être la réponse je pense. Il a correctement identifié le problème plutôt que de simplement en offrant potentiellement une meilleure option stylistique. Le problème est peut être la combinaison de ré-utilisation d'un nom existant et de mettre cette nouvelle définition dans un fichier externe (puisque vous pouvez sinon redéfinir les noms), de sorte qu'il n'était pas visible au moment de la liaison.
OriginalL'auteur faid