OVH Cloud OVH Cloud

[HTML+VBS] Nom de balise variable ?

2 réponses
Avatar
Machaon
Bonjour à tous,

dans mon code HTML, j'ai :
<input type="text" name="nom1" value="toto">
<input type="text" name="nom2" value="totu">
<input type="text" name="nom3" value="toti">

dans ma fonction VBS, je cherche à faire une boucle for qui parcours les
valeurs de mes inputs.
Voici mon code :
For i=1 to 3
MsgBox forme.['nom'&i].value
Next


Evidement, ça marche pas.. comment faire pour faire fonctionner cette boucle
?

Merci à tous.

2 réponses

Avatar
François Picalausa
Hello,

tu peux utiliser
getElementsByName
qui retourne une collection d'objets en se basant sur l'attribut name,
applicable à l'objet document:

Public Sub DispFields()
Dim i
For i = 1 To 3
Msgbox document.getElementsByName("nom" & i).item(,0).value
Next
End Sub

Si tu as plusieurs champs avec le même name, tu peux employer
getElementsByTagName qui lui est applicable à un objet form:

Public Sub DispFields()
Dim Fields, Field
Set Fields = formulaire.getElementsByTagName("input")

For Each Field In Fields
If Lcase(Field.Type) = "text" Then
MsgBox Field.Name & " : " & Field.Value
End If
Next
End Sub

--
François Picalausa (MVP VB)
http://faq.vb.free.fr --- http://msdn.microsoft.com
http://apisvb.europe.webmatrixhosting.net

"Machaon" a écrit dans le message de
news:cdnuo1$prt$
Bonjour à tous,

dans mon code HTML, j'ai :
<input type="text" name="nom1" value="toto">
<input type="text" name="nom2" value="totu">
<input type="text" name="nom3" value="toti">

dans ma fonction VBS, je cherche à faire une boucle for qui parcours
les valeurs de mes inputs.
Voici mon code :
For i=1 to 3
MsgBox forme.['nom'&i].value
Next


Evidement, ça marche pas.. comment faire pour faire fonctionner cette
boucle ?

Merci à tous.


Avatar
Machaon
Merci bcp François, en fait, j'ai réussi à résoudre mon pb grâce à la
fonction Eval() qui me transforme ma chaine concaténée en objet utilisable !






"François Picalausa" a écrit dans le message de
news:
Hello,

tu peux utiliser
getElementsByName
qui retourne une collection d'objets en se basant sur l'attribut name,
applicable à l'objet document:

Public Sub DispFields()
Dim i
For i = 1 To 3
Msgbox document.getElementsByName("nom" & i).item(,0).value
Next
End Sub

Si tu as plusieurs champs avec le même name, tu peux employer
getElementsByTagName qui lui est applicable à un objet form:

Public Sub DispFields()
Dim Fields, Field
Set Fields = formulaire.getElementsByTagName("input")

For Each Field In Fields
If Lcase(Field.Type) = "text" Then
MsgBox Field.Name & " : " & Field.Value
End If
Next
End Sub

--
François Picalausa (MVP VB)
http://faq.vb.free.fr --- http://msdn.microsoft.com
http://apisvb.europe.webmatrixhosting.net

"Machaon" a écrit dans le message de
news:cdnuo1$prt$
> Bonjour à tous,
>
> dans mon code HTML, j'ai :
> <input type="text" name="nom1" value="toto">
> <input type="text" name="nom2" value="totu">
> <input type="text" name="nom3" value="toti">
>
> dans ma fonction VBS, je cherche à faire une boucle for qui parcours
> les valeurs de mes inputs.
> Voici mon code :
> For i=1 to 3
> MsgBox forme.['nom'&i].value
> Next
>
>
> Evidement, ça marche pas.. comment faire pour faire fonctionner cette
> boucle ?
>
> Merci à tous.