Ordonner les actions dans un onclick ???
Résolu
Odeim
-
Joe -
Joe -
Bonjour,
peut on ordonner plusieurs actions réalisées dans un même attribut (onclick) d'un td ?
Je m'explique, j'ai un calendrier que j'affiche, lorsque l'on clic sur un jour, un formulaire apparait et j'aimerais que le jour sélectionné change de couleur au moment de sa sélection... Pour cela j'ai créé un CSS, je change donc la class de mon td sélectionné (un td = un jour) avec : onclick="this.className='select'" Mais ceci colore chaque jour que je sélectionne sans remettre le précédant en couleur normale...
Ce que je veux donc faire c'est rafraichir mon calendrier avant de le colorer ainsi chaque cellule est réinitialisé avant de se faire sélectionner...
Pour ce faire, j'ai essayé :
onclick="<%= remote_function(:url => {:action => 'refresh_calendar', :user => @userid}, :with => "'new_month=#{@month}&new_year=#{@year}'") %>; this.className='select'">
Ce qui est en gras est simplement l'appel de ma fonction de rafraichissement du calendrier.
Avec ce code, il exécute bien les deux actions mais il les fait dans le mauvais sens, il colore ma cellule puis il rafraichit mon calendrier...comment puis-je forcer le rafraichissement à se faire avant ? Parce que la la cellule se colore et comme il rafraichit le calendrier ensuite elle redevient comme avant.
PS: J'ai essayé d'inverser l'ordre des deux actions dans mon onclick, non ça ne change rien il fait toujours la coloration en premier...Que puis-je faire ????
peut on ordonner plusieurs actions réalisées dans un même attribut (onclick) d'un td ?
Je m'explique, j'ai un calendrier que j'affiche, lorsque l'on clic sur un jour, un formulaire apparait et j'aimerais que le jour sélectionné change de couleur au moment de sa sélection... Pour cela j'ai créé un CSS, je change donc la class de mon td sélectionné (un td = un jour) avec : onclick="this.className='select'" Mais ceci colore chaque jour que je sélectionne sans remettre le précédant en couleur normale...
Ce que je veux donc faire c'est rafraichir mon calendrier avant de le colorer ainsi chaque cellule est réinitialisé avant de se faire sélectionner...
Pour ce faire, j'ai essayé :
onclick="<%= remote_function(:url => {:action => 'refresh_calendar', :user => @userid}, :with => "'new_month=#{@month}&new_year=#{@year}'") %>; this.className='select'">
Ce qui est en gras est simplement l'appel de ma fonction de rafraichissement du calendrier.
Avec ce code, il exécute bien les deux actions mais il les fait dans le mauvais sens, il colore ma cellule puis il rafraichit mon calendrier...comment puis-je forcer le rafraichissement à se faire avant ? Parce que la la cellule se colore et comme il rafraichit le calendrier ensuite elle redevient comme avant.
PS: J'ai essayé d'inverser l'ordre des deux actions dans mon onclick, non ça ne change rien il fait toujours la coloration en premier...Que puis-je faire ????
A voir également:
- Ordonner les actions dans un onclick ???
- Cette action ne peut pas être réalisée car le fichier est ouvert dans system - Guide
- Comment ordonner une liste sur excel - Guide
- Actions fans - Accueil - Guide arnaque
- Virginie n’a pas les droits d’administrateur sur son ordinateur. quelles sont les actions qu’elle ne peut pas faire ? - Forum Windows
- Nous limitons la fréquence de certaines actions que vous pouvez effectuer sur instagram ✓ - Forum Instagram
4 réponses
Hello,
Les actions se lancent simultanément mais c'est la plus rapide qui prend la main en quelques sortes...
Tu peux donc songer à faire en sorte que ta première fonction te retourne "vrai" quand elle a finit, et tu ne lances la seconde que quand la première t'a retourné quelque chose.
Tu peux aussi utiliser une file : https://www.commentcamarche.net/faq/32778-les-piles-et-les-files-en-javascript
Les actions se lancent simultanément mais c'est la plus rapide qui prend la main en quelques sortes...
Tu peux donc songer à faire en sorte que ta première fonction te retourne "vrai" quand elle a finit, et tu ne lances la seconde que quand la première t'a retourné quelque chose.
Tu peux aussi utiliser une file : https://www.commentcamarche.net/faq/32778-les-piles-et-les-files-en-javascript
donc comme ça
function lance(){ if(fonction_1()){ fonction_2(); } } //fonction 1 function fonction_1(){ //tes instructions //puis return true; } //fonction 2 function fonction_2(){ //tes instructions //puis return true; } <html> onclick="lance();"
Ok cool ! Merci bien à vous deux, j'ai réussi à faire tourner ça :)
Merci beaucoup pour les réponses rapides !
Merci beaucoup pour les réponses rapides !
Par ailleurs, il est plus simple de mettre des identifiants uniques sur les jours et de sauvegarder l'ancienne id sélectionné dans une variable. C'est plus propre. Comme ca tu n'as que deux actions à faire dans ton onclick, du genre:
document.getElementById( ancienID ).className = 'nonselectionne';
document.getElementById( idcourant ).className = 'selectionne';
document.getElementById( ancienID ).className = 'nonselectionne';
document.getElementById( idcourant ).className = 'selectionne';