11485 sujets

JavaScript, DOM et API Web HTML5

bonjour,

cela fait plusieurs jours que je tente des approches avec des outils qui ne sont pas fait pour le contenu que je souhaite mettre en œuvre.

Problématique :

7 véhicules
4 couleurs par véhicules
3 choix de teintes pour vitres


Réalisation :
• dans un cadre, le véhicule qui sera modifié au gré des options
• dans le tableau (formulaire) les choix spécifiques dans une colonne distincte (3 colonnes)
• Chaque modification dans une des colonnes modifie l'image en temps réel

J'ai déjà fait le photoshop sur les véhicules car j'ai tenté une approche avec Google We designer mais comme c'est pas sa réelle utilité, çà bug quand trop d'élément sont dynamiques et cliquables.

Je pense que du javascript + un peu de php s'impose mais mes connaissances étant limité en la matière, j'aurai aimé un coup de main pour savpir comment aborder le sujet...

Cordialement
Bonjour,
C'est tout à fait possible de mettre en œuvre ceci avec Javascript (c'est même assez simple tu vas voir).
Si je compte bien ( Smiley rolleyes ) tu as 84 images normalement (pour chacune des 7 voitures il y a 4 couleurs, et pour chacune des 4 couleurs il y a 3 teintes de vitre donc 7*4*3=84).
Notons les chose ainsi:
Voiture 1: v1                      Couleur 1: c1                    Teinte 1: t1
Voiture 2: v2                      Couleur 2: c2                    Teinte 2: t2
Voiture 3: v3                      Couleur 3: c3                    Teinte 3: t3
Voiture 4: v4                      Couleur 4: c4
Voiture 5: v5
Voiture 6: v6
Voiture 7: v7

(Remplace "Voiture 1", "Couleur 3", "Teinte 2" par tes propres valeurs comme "Kangoo", "Rouge", "Foncé")

Tu peux donc nommer tes images selon la forme:
vx-cx-tx.jpg

Construisons un formulaire en html:
<form>
     <label for="v">Choisissez votre voiture</label>
     <select id="v">
          <option value="v1">Voiture 1</option>
          <option value="v2">Voiture 2</option>
          <option value="v3">Voiture 3</option>
          <option value="v4">Voiture 4</option>
          <option value="v5">Voiture 5</option>
          <option value="v6">Voiture 6</option>
          <option value="v7">Voiture 7</option>
     </select>
     <label for="c">Choisissez votre couleur</label>
     <select id="c">
          <option value="c1">Couleur 1</option>
          <option value="c2">Couleur 2</option>
          <option value="c3">Couleur 3</option>
          <option value="c4">Couleur 4</option>
     </select>
     <label for="t">Choisissez la teinte de vos vitres</label>
     <select id="t">
          <option value="t1">Teinte 1</option>
          <option value="t2">Teinte 2</option>
          <option value="t3">Teinte 3</option>
     </select>
</form>


Tu es d'accord qu'à présent, il suffirait de dire "charge moi l'image <select id="v">-<select id="c">-<select id="t">.jpg" ? Et bien Javascript sert à ça (sauf que la syntaxe que je viens de te montrer n'a aucun sens). Admettons que tu mette ton image ainsi en html:
<img id="img"/>


En Javascript tu créé la fonction "chargeImage":
function chargeImage() {
     var v=document.getElementById('v').value;
     var c=document.getElementById('c').value;
     var t=document.getElementById('t').value;
     document.getElementById('img').setAttribute('src','./images/'+v+'-'+c+'-'+t+'.jpg'); // En admettant que tes image soient dans le dossier "./images"
}


Il ne reste plus qu'à exécuter la fonction à chaque fois que la valeur des <select> est modifiée:
document.getElementById('v').onchange=chargeImage;
document.getElementById('c').onchange=chargeImage;
document.getElementById('t').onchange=chargeImage;


Voilà l'idée, à toi d'adapter. Smiley cligne
Poulalala...

merci bien... effectivement présenté comme tu le fais, cela semble étonnamment simple...
Je vais m'y mettre dès demain et je ferai un feedback complet sur la mise en place, en espérant que cela puisse servir à d'autres.

Merci infiniment et je reviens dès que j'ai un début de résultat.
salut,
juste pour dire de ne pas laisser l'attribut "action" inexistant sur le <form> et que

<img id="img"/>

n'est pas correct. Il faut spécifier les attributs "src" et "alt". Pourquoi ne pas mettre une image blanche pour commencer ou carrément créer la balise dynamiquement lors du premier ajout.

Pour définir un "src" en JS on peut passer directement via "img.src" au lieu de "setAttribute".
Une autre manière de coder pourrait ressembler à ça

function addEvent(a,b,c,d){a.addEventListener?a.addEventListener(b,c,d||!1):a.attachEvent('on'+b,c);}

var sel = document.querySelectorAll("sel"),
	img = document.getElementById("img");

for (var i=0; i<3; i++) addEvent(sel[ i ], "change", function (){
	img.src = "dossier/" + sel[0].value +"-"+ sel[1].value +"-"+ sel[2].value +".jpg";
}, false);
Merci pour ces corrections Smiley cligne
Je n'avais effectivement pas fais cela dans la parfaite rigueur Smiley confused

Quant à ton code Js, je doit t'avouer que je ne me suis jamais vraiment penché sur les évènements en Javascript; je vois (à peu près) ce que c'est, j'en utilise, mais je ne sais pas vraiment comment cela fonctionne Smiley sweatdrop
J'ai donc écrit mon Js uniquement avec ce que je connaissais.