[JS] ajouter des méthodes a un <select>

ajouter des méthodes a un <select> [JS] - Delphi/Pascal - Programmation

Marsh Posté le 12-02-2004 à 14:18:03    

bonjour,
 
je voudrais rajouter des méthodes a un objet select, que ca marche sous IE & moz, 100 balles et un mars.
 
La méthode, je la connais, faut ajouter la méthode dans le prototype, comme par exemple pour une chaine :
 

Code :
  1. String.prototype.trim = function()
  2. {
  3.   return this.replace(/^\s*/, "" ).replace(/\s*$/, "" );
  4. }


 
Le probleme, c'est que ben la, c'est String, mais pour un select, c'est quoi comme objet ?

Reply

Marsh Posté le 12-02-2004 à 14:18:03   

Reply

Marsh Posté le 12-02-2004 à 14:21:45    

bon, pour mozilla, ca passe :
 

Code :
  1. HTMLSelectElement.prototype.kikoo = function()
  2. {
  3.  alert(this.options.length);
  4. }


 
mais sous IE, niet :/

Reply

Marsh Posté le 12-02-2004 à 14:27:02    

tu peux pas le faire sur une instance de ton objet?
(document.getElementById('idDeTonSelect').prototype.... ?


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 12-02-2004 à 14:28:45    

the real moins moins a écrit :

tu peux pas le faire sur une instance de ton objet?
(document.getElementById('idDeTonSelect').prototype.... ?


non, parce que je veux l'ajouter dans un .js, sans prérequis sur la page

Reply

Marsh Posté le 12-02-2004 à 14:31:22    

Reply

Marsh Posté le 12-02-2004 à 14:46:45    


raté.
y'a pas d'objet Select, ni sous moz ni sous IE.
et si je modifie directement Object, ca passe sous moz, ca passe pas sous IE (ou plutot, ca passe, mais il retrouve pas ma méthode)

Reply

Marsh Posté le 12-02-2004 à 14:52:42    

les methodes elles s'appliquent aux elements de ta liste, ou a ta liste en general ?
 
edit : sinon tu peux essayer avec element.selectedIndex pour ie.
le truc c'est que mozilla il risque de pas aimer :/


Message édité par walli le 12-02-2004 à 14:54:59
Reply

Marsh Posté le 12-02-2004 à 14:54:22    

walli a écrit :

les methodes elles s'appliquent aux elements de ta liste, ou a ta liste en general ?


a ma liste.

Reply

Marsh Posté le 12-02-2004 à 14:55:05    

encore que, c'est pour créer les options de ma liste, donc jpeux ptet essayer de les mettre dans Array

Reply

Marsh Posté le 12-02-2004 à 14:55:27    

mais bon, c'est moins fun :/

Reply

Marsh Posté le 12-02-2004 à 14:55:27   

Reply

Marsh Posté le 12-02-2004 à 14:55:59    

j'ai edite mon message
mais suis pas convaincue de ce que j'ai mis en fait :whistle:

Reply

Marsh Posté le 12-02-2004 à 14:57:30    

walli a écrit :


edit : sinon tu peux essayer avec element.selectedIndex pour ie.
le truc c'est que mozilla il risque de pas aimer :/


gni ?
 
 
mais la mon code c'est un exemple, je veux pouvoir rajouter n'importe quelle méthode (en l'occurence, conversion du contenu vers chaine, et dans l'autre sens)

Reply

Marsh Posté le 12-02-2004 à 15:01:20    

lorill a écrit :


gni ?
 
 
mais la mon code c'est un exemple, je veux pouvoir rajouter n'importe quelle méthode (en l'occurence, conversion du contenu vers chaine, et dans l'autre sens)


 
oui, mais le element.selectedIndex c'est a la place du HTMLSelectElement sous mozilla, pour que ca passe sous ie..
suis pas assez claire ?
 
tu fais un htc a part au fait pour ton select ?

Reply

Marsh Posté le 12-02-2004 à 15:03:56    

walli a écrit :


oui, mais le element.selectedIndex c'est a la place du HTMLSelectElement sous mozilla, pour que ca passe sous ie..
suis pas assez claire ?


je crois surtout que t'es a coté, ou alors y'a un truc que je comprends pas.
 
HTMLSelectElement, c'est le nom de l'objet associé au tag <select>, pas l'élement sélectioné de la liste.
 
et autre truc bizarre :  
maliste.options n'est pas une instance d'Array

Reply

Marsh Posté le 12-02-2004 à 15:04:19    

walli a écrit :


tu fais un htc a part au fait pour ton select ?


:??:

Reply

Marsh Posté le 12-02-2004 à 15:06:18    

gagné, c'est pas un Array mais un HTMLOptionsCollection :/
et sous ie, ben je sais pas :o

Reply

Marsh Posté le 12-02-2004 à 15:08:23    

lorill a écrit :


je crois surtout que t'es a coté, ou alors y'a un truc que je comprends pas.
 
HTMLSelectElement, c'est le nom de l'objet associé au tag <select>, pas l'élement sélectioné de la liste.
 
et autre truc bizarre :  
maliste.options n'est pas une instance d'Array


 
d'accord, j'etais a cote [:dawa]
 
je regarde quand meme si je trouve pas une idee..

Reply

Marsh Posté le 12-02-2004 à 15:08:47    


 
Si j'arrivais à REELEMENT comprendre ce que tu cherches à faire, je pourrais peut être t'aider. [:spamafote]
 
Mais là, c'est trop théorique pour moi. Il me faudrait un truc un peu plus concret. Que veux-tu faire exactement concrêtement (quand je dis concrêtement, ça veut dire "sans parler d'objet, d'instance, de méthode etc...".)

Reply

Marsh Posté le 12-02-2004 à 15:09:34    


 
bah ouais, nous on a tendance a faire des .htc pour tout ce qui est select, checkbox, input..., des qu'on a des methodes particulieres a leur attribuer..

Reply

Marsh Posté le 12-02-2004 à 15:14:04    

c'est quoi HTC que le monsieur veut savoir [:mlc]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 12-02-2004 à 15:15:15    

the real moins moins a écrit :

c'est quoi HTC que le monsieur veut savoir [:mlc]


 
tiens oui au fait, ça m'intéresse aussi.  :D

Reply

Marsh Posté le 12-02-2004 à 15:18:08    

Hospitalisation à Temps Complet !!

Reply

Marsh Posté le 12-02-2004 à 15:18:42    

hermes le messager a écrit :

(quand je dis concrêtement, ça veut dire "sans parler d'objet, d'instance, de méthode etc...".)  


ben ca va etre dur alors, parce que je voudrais bien que ce soit générique.
 
bon, essayons quand même.
J'ai une liste (tag <select> ) dans ma page.
Je veux la garnir dynamiquement en fonction de deux de mes variables de type chaine, une contenant les labels séparés par des virgules, l'autres les valeurs séparés de la même maniere.
 
Je sais garnir cette liste, de cette maniere :

Code :
  1. function garnir(liste, labels, values)
  2. {
  3.   //split, for, new Option()
  4. }


 
a l'utilisation, ca donne  

Code :
  1. garnir(document.getElementById('list'), labels, values)


 
et moi je veux

Code :
  1. document.getElementById('list').garnir(labels, values)


 
c'est plus clair ?
en gros, ca sert pas a grand chose, mais je suis obstiné

Reply

Marsh Posté le 12-02-2004 à 15:19:26    

j'ai toujours pas capté ces histoires d'htc :o

Reply

Marsh Posté le 12-02-2004 à 15:20:11    

C'est tout de suite plus clair là. Attend je regarde quelques trucs sur mon éditeur. ;)

Reply

Marsh Posté le 12-02-2004 à 15:24:24    

bon, pour une instance particuliere, c'est facile, suffit de rajouter la méthode avec un truc genre
 

Code :
  1. function kikoo()
  2. {
  3.  alert(this.options.length);
  4. }
  5. function ajouteKikoo(list)
  6. {
  7.  list.kikoo = kikoo
  8. }


 
mais pour que ca marche automatiquement pour toutes les listes, c'est autre chose :o

Reply

Marsh Posté le 12-02-2004 à 15:24:34    

lorill a écrit :

j'ai toujours pas capté ces histoires d'htc :o


 
c'est un langage qui fait partie de javascript, je pensais que c'etait couremment repandu, mais en faisant une recherche rapide sur le net, je me rends compte que non, donc tu peux oublier  :p  
 
mais en gros tu crees un fichier selectLorill.htc.
dans ta page html dans ta balise select tu mets class="selectLorill"
et dans ton fichier htc, tu fous toutes tes methodes liees a ta liste.
ca permet de pas trop charger les fichiers html/js  [:spamafote]  
 
je peux poster un exemple de code si vous voulez, mais ca sera ptet pas tres parlant, car c'est tres specifique a nos produits.
et puis c'est pas l'objet du topic !

Reply

Marsh Posté le 12-02-2004 à 15:27:37    

ooh, je connais pas ca :o
j'essaye de suite

Reply

Marsh Posté le 12-02-2004 à 15:28:31    

lorill a écrit :

ooh, je connais pas ca :o
j'essaye de suite


 
je doute que ca passe avec mozilla.

Reply

Marsh Posté le 12-02-2004 à 15:29:40    

walli a écrit :


 
je doute que ca passe avec mozilla.


 
Ouai. Ya assez de problème comme ça avec le dom sans encore rajouter des joyeusetés.  :D  Et je commence à savoir de quoi je parle dans ce domaine.

Reply

Marsh Posté le 12-02-2004 à 15:30:08    

marche pas, ca les rajoute pas a l'instance.
bon, ben je vais cumuler mon truc propre a une instance avec document.getElementsByTagName [:spamafote]

Reply

Marsh Posté le 12-02-2004 à 15:30:28    

hermes le messager a écrit :


 
Ouai. Ya assez de problème comme ça avec le dom sans encore rajouter des joyeusetés.  :D  Et je commence à savoir de quoi je parle dans ce domaine.


 
j'attendais avec impatience, la reflexion que tu allais faire  :D  
 
je m'attendais a pire  :lol:

Reply

Marsh Posté le 12-02-2004 à 15:31:26    

lorill a écrit :

marche pas, ca les rajoute pas a l'instance.
bon, ben je vais cumuler mon truc propre a une instance avec document.getElementsByTagName [:spamafote]


tu fais vite pour tester  :ouch:

Reply

Marsh Posté le 12-02-2004 à 15:41:14    

walli a écrit :


tu fais vite pour tester  :ouch:  


ben je suis au taff, donc je bosse  [:sinclaire]

Reply

Marsh Posté le 12-02-2004 à 15:45:49    

lorill a écrit :


ben je suis au taff, donc je bosse  [:sinclaire]  


 
Un truc tout con, bien que lourd :
 
Tu peux utiliser bêtement un write en JS pour écrire tes nouvelles options avec une boucle en JS.
 
C'est sale, TRES sale même, mais ça devrait marcher.  :whistle:

Reply

Marsh Posté le 12-02-2004 à 15:46:44    


j'arrive a ajouter les options proprement et sans probleme, merci.
apres c'est juste de l'enculage de mouches

Reply

Marsh Posté le 12-02-2004 à 15:48:44    

lorill a écrit :


j'arrive a ajouter les options proprement et sans probleme, merci.
apres c'est juste de l'enculage de mouches


 
ah bon.  :lol:  Oh ben alors, je te laisse continuer...  :D  

Reply

Marsh Posté le 12-02-2004 à 15:51:31    

ben en parcourant la liste des instances et en le rajoutant a chaque instance, ca passe, je vais m'arreter la.

Reply

Marsh Posté le 12-02-2004 à 15:54:59    

lorill a écrit :

ben en parcourant la liste des instances et en le rajoutant a chaque instance, ca passe, je vais m'arreter la.


 
En même temps, c'est vrai que c'est intéressant de pouvoir proposer toute une liste d'un coup en faisant ce que tu fais. Faudra que je regarde ça un peu plus en détail un de ces quatres.

Reply

Marsh Posté le 24-02-2004 à 12:47:35    

lorill a écrit :

bonjour,
 
je voudrais rajouter des méthodes a un objet select, que ca marche sous IE & moz, 100 balles et un mars.
 
La méthode, je la connais, faut ajouter la méthode dans le prototype, comme par exemple pour une chaine :
 

Code :
  1. String.prototype.trim = function()
  2. {
  3.   return this.replace(/^\s*/, "" ).replace(/\s*$/, "" );
  4. }


 
http://www.mattkruse.com/javascrip [...] index.html
 
Et voilà ;o)
 
Le probleme, c'est que ben la, c'est String, mais pour un select, c'est quoi comme objet ?

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed