OVH Cloud OVH Cloud

Tableau avec des éléments indéfinis

7 réponses
Avatar
jacek55
Bonjour,

J'ai =E9crit :


<html><head>
<Title>Test value</title>
<script type=3D"text/javascript">

function test() {
var i =3D document.getElementsByName('brut')[0].value ;
alert (i.length+' '+i) ;
alert (i[0]) ;
}
</script></head>

<body>

<input type=3Dtext name=3Dbrut onchange=3D"test()" ></input>

</body></html>

Je lance, je saisie quelque chose dans la zone input, le premier alert
se passe bien et le deuxi=E8me me dit 'undefined'.

J'ai donc reussi cr=E9er un tableau (puisque il a une logeur) avec des
=E9l=E9ments ind=E9finis.

Quelqu'un puisse m'=E9clairer, avant que je ne devient fou ?

Merci

Jacek

PS : IE 6.0.2800.1106.et j'en passe.

7 réponses

Avatar
Guy
bonjour,

function test() {
var i = document.getElementsByName('brut')[0].value ;
i contient la valeur du champ "brut" ! c'est un string !

l'indice 0 est certainement inutile !


alert (i.length+' '+i) ;


ici vous devez voir longueur de valeur suivi de valeur
alert (i[0]) ;
i n'est pas un Array => undefined


G

}
</script></head>

<body>

<input type=text name=brut onchange="test()" ></input>




Avatar
jacek55

bonjour,

function test() {
var i = document.getElementsByName('brut')[0].value ;
i contient la valeur du champ "brut" ! c'est un string !

l'indice 0 est certainement inutile !


Si j'ai bien compris, getElementsByName m'envoi tous les objets avec
l'attribut 'name' égale au paramètre donné ('brut' en occurence) ;
donc l'indice '0' indique le premier de ces éléments.



alert (i.length+' '+i) ;


ici vous devez voir longueur de valeur suivi de valeur


c'est vrai

alert (i[0]) ;
i n'est pas un Array => undefined




mais comment faire pour toucher le premier (ou autre) caractère ?

G

}
</script></head>

<body>

<input type=text name=brut onchange="test()" ></input>






merci

Jacek


Avatar
Guy


bonjour,

function test() {
var i = document.getElementsByName('brut')[0].value ;


i contient la valeur du champ "brut" ! c'est un string !
l'indice 0 est certainement inutile !



Si j'ai bien compris, getElementsByName m'envoi tous les objets avec
l'attribut 'name' égale au paramètre donné ('brut' en occurence) ;
donc l'indice '0' indique le premier de ces éléments.


getElementsByName ou getElementsById concernent un seul élément !
getElementsByTag renvoie une liste (array) des éléments ayant tag=qqchose !




alert (i.length+' '+i) ;


ici vous devez voir longueur de valeur suivi de valeur



c'est vrai


alert (i[0]) ;


i n'est pas un Array => undefined




mais comment faire pour toucher le premier (ou autre) caractère ?


utiliser les methodes de traitement de string : substr, substring, slice
...indexOf



G


}
</script></head>

<body>

<input type=text name=brut onchange="test()" ></input>





merci

Jacek





Avatar
YD
bonjour,
function test() {
var i = document.getElementsByName('brut')[0].value ;
i contient la valeur du champ "brut" ! c'est un string !

l'indice 0 est certainement inutile !


L'indice s'applique au résultat de getElementsByName()
qui est toujours une collection formée de tous les objets
dont l'attribut name correspond à l'argument. L'indice est
donc indispensable pour accéder à un élément particulier
(ici, 0 indique le premier).

alert (i.length+' '+i) ;


ici vous devez voir longueur de valeur suivi de valeur


Oui, i étant une chaîne de caractères (une 'string'), sa propriété
length correspond à sa longueur c-à-d. au nombre de caractères
qu'elle contient.

alert (i[0]) ;
i n'est pas un Array => undefined



Pour accéder au niéme caractère on peut utiliser charAt() :
alert(i.charAt(0));

--
Y.D.


Avatar
jacek55
Merci, tu sauves ma santé mentale.

Jacek
Avatar
YD

getElementsByName ou getElementsById concernent un seul élément !
getElementsByTag renvoie une liste (array) des éléments ayant tag=qqchose !


Un id étant unique (norme HTML4 et XHTML), il ne peut y avoir qu'un élément
avec un id donné, donc getElementById renvoie un élément (sans s à Element).

Les tags (in french balises HTML) n'étant pas forcément uniques la méthode
permettant de récupérer tous les éléments d'un type donné s'appelle
getElementsByTagName -- bien noter le Elements qui signifie qu'on récupère
une collection d'éléments (éventuellement vide).


Pour les attributs name, le raisonnement est le même. Ils ne sont pas
forcément uniques -- cas des boutons radio notamment --, donc
getElementsByName (avec un s à Elements) ramène une collection également.

--
Y.D.

Avatar
Bertrand B
donc l'indice '0' indique le premier de ces éléments.

getElementsByName ou getElementsById concernent un seul élément !
getElementsByTag renvoie une liste (array) des éléments ayant tag= qqchose !

getElementById et getElementsbyTag tout est dans le s à la fin d'élé ment