4lman78
Messages postés44Date d'inscriptionjeudi 19 octobre 2006StatutMembreDernière intervention 9 février 2010
-
10 juin 2009 à 22:13
4lman78
Messages postés44Date d'inscriptionjeudi 19 octobre 2006StatutMembreDernière intervention 9 février 2010
-
15 juin 2009 à 14:11
Bonjour
J'ai deux champs texte dans l'exemple ci dessous, dans mon cas concret il pourra y en avoir une vingtaine.
Or je n'arrive pas a ce que chaque champs texte opère avec les menu déroulant lui correspondant.
Voici mon code :
<html>
<head>
<script language= "javascript">
function affichechoix(texte)
{
if (texte.value!="0") {
for (var i=1; i<=99; i++) {
var indice = "alex" + i;
document.getElementById(indice).style.display= 'none';
}
for (var i=1; i<=texte.value; i++) {
var indice = "alex" + i;
document.getElementById(indice).style.display= 'block';
}
}
}
function affichelol(texte)
{
if (texte.value!="0") {
for (var i=1; i<=99; i++) {
var indice = "alex" + i;
document.getElementById(indice).style.display= 'none';
}
for (var i=1; i<=texte.value; i++) {
var indice = "alex" + i;
document.getElementById(indice).style.display= 'block';
}
}
}
</script>
</head>
Bul3
Messages postés4933Date d'inscriptionsamedi 1 juillet 2006StatutMembreDernière intervention 2 février 201516 11 juin 2009 à 08:17
Bonjour,
loin d'avoir tout compris !
mais : tu as plusieurs éléments avec le même ID, c'est interdit. un ID doit être unique dans une page
ensuite :
__ j'ai remplacé la fonction affichechoix comme suit
function affichechoix(texte)
{ if (texte.value!= "0") {
var i=1;
while (document.getElementById("alex" + i) )
{ document.getElementById("alex" + i).style.display= 'none';
i++;
}
document.getElementById("alex"+texte.value).style.display= 'block';
}
}
__ mis en commentaires la fonction affichelol
__ fait un exemple avec 2 div ( 100 c'était trop )
<FORM ACTION="/prive/petite_annonce/affiche_annonce.php" method="post" name="form1" >
je ne sais pas si ça correspond avec ce que tu veux ( c'est pas clair ) ??
mais ça affiche le div voulu. à toi de finir.
perso j'aurais procédé autrement :
cacher le div précédent affiché
montrer le div actuel
div précédent affiché = div actuel
Bul3
Messages postés4933Date d'inscriptionsamedi 1 juillet 2006StatutMembreDernière intervention 2 février 201516 11 juin 2009 à 09:34
>>c'est un chiffre qui est rentré, en fonction de ce nombre
>>il faudra affiché le nombre correspondant de menu déroulant
dans le select ?
document.form1["alex"+index].selectedIndex=Number(texte.value);
par exemple, si on passe l'index du sdelect à l'appel
passer le name ou l'id.. du select, tu peux
4lman78
Messages postés44Date d'inscriptionjeudi 19 octobre 2006StatutMembreDernière intervention 9 février 2010 11 juin 2009 à 11:30
Alors j'ai repris les choses, comment simplifié ce code? Je présice ce code marche mais comment faire pour qu'il n'y ai qu'un seule fonction affichechoix et non affichechoix1, affichechoix2, affichechoix3
Merci d'avance !
<script language= "javascript">
function affichechoix1(texte)
{
if (texte!="0") {
for (var i=1; i<=20; i++) {
var indice = "alex1";
document.getElementById(indice).style.display= 'none';
}
for (var i=1; i<=texte; i++) {
var indice = "alex1";
document.getElementById(indice).style.display= 'block';
}
}
}
function affichechoix2(texte)
{
if (texte!="0") {
for (var i=1; i<=20; i++) {
var indice = "alex2";
document.getElementById(indice).style.display= 'none';
}
for (var i=1; i<=texte; i++) {
var indice = "alex2";
document.getElementById(indice).style.display= 'block';
}
}
}
function affichechoix3(texte)
{
if (texte!="0") {
for (var i=1; i<=20; i++) {
var indice = "alex3";
document.getElementById(indice).style.display= 'none';
}
for (var i=1; i<=texte; i++) {
var indice = "alex3";
document.getElementById(indice).style.display= 'block';
}
}
}
4lman78
Messages postés44Date d'inscriptionjeudi 19 octobre 2006StatutMembreDernière intervention 9 février 2010 11 juin 2009 à 11:45
Voila une version comme je veux sauf que je voudrai pas avoir a écrire toute les possibilité, mais je ne sais pas comment utilisé une boucle de fonction.
<html>
<head>
<script language= "javascript">
function affichechoix1(texte)
{
if (texte.value!="0") {
for (var i=1; i<=99; i++) {
var indice = "alex" + i;
document.getElementById(indice).style.display= 'none';
}
for (var i=1; i<=texte.value; i++) {
var indice = "alex" + i;
document.getElementById(indice).style.display= 'block';
}
}
}
function affichechoix2(texte)
{
if (texte.value!="0") {
for (var i=1; i<=99; i++) {
var indice = "marie" + i;
document.getElementById(indice).style.display= 'none';
}
for (var i=1; i<=texte.value; i++) {
var indice = "marie" + i;
document.getElementById(indice).style.display= 'block';
}
}
}
function affichechoix3(texte)
{
if (texte.value!="0") {
for (var i=1; i<=99; i++) {
var indice = "pierre" + i;
document.getElementById(indice).style.display= 'none';
}
for (var i=1; i<=texte.value; i++) {
var indice = "pierre" + i;
document.getElementById(indice).style.display= 'block';
}
}
}
</script>
</head>
Si le champs texte a la valeur 0 aucun menu déroulant doit etre affiché.
Exemple :
1er champs texte : valeur rentrée : 3 on aura donc 3 menu déroulant avec les 6 options chacun.
2er champs texte : valeur rentrée : 5 on aura donc 5 menu déroulant avec les 6 options chacun.
3er champs texte : valeur rentrée : 0 on aura donc 0 menu déroulant avec les 6 options chacun.
4er champs texte : ....
Toujours pareil, le nombre maximum de champ texte est de 50.