11521 sujets

JavaScript, DOM et API Web HTML5

Bonjour,
Nous rencontrons quelques problèmes pour réaliser les fonctions de notre jeux. Nous avons différentes images qui servent de boutons et au clic, nous voudrions que la valeur correspondant à ces images s'enregistrent dans une sorte de tableau ( non visible sur la page), afin de pouvoir réaliser des tests logiques qui détermineront la victoire ou la défaite dans le jeu.

Dans le html, nous avons pour chaque image/bouton (par catégorie : homme/armes/armures/accessoires) ceci (ici le cas du personnage homme) :



<div id="images_hommes">
        <input type="image" name="" value="1" src="image/guerrier.jpg" alt="guerrier" onmouseover="this.src='image/Texte guerrier.jpg'"
	onmouseout="this.src='image/guerrier.jpg'" alt="guerrier"class="guerrier" onclick="acc('guerrier'); enregistrement(this.value); "/> 
        <input type="image" name="" value="2" src="image/magicien.jpg" alt="magicien" onmouseover="this.src='image/Texte magicien.jpg'"
	onmouseout="this.src='image/magicien.jpg'" alt="magicien" class="magicien" onclick="acc('magicien'); enregistrement(); "/>
        <input type="image" name="" value="3" src="image/archer.jpg" alt="archer" onmouseover="this.src='image/Texte archer.jpg'"
	onmouseout="this.src='image/archer.jpg'" alt="archer"class="archer" onclick="acc('archer'); enregistrement(); "/>
        <br>
        Guerrier Magicien Archer
    </div>

Et voici la fonction correspondant au tableau, qui ne fonctionne pas. Pour le alert, notre but n'est pas d'afficher, c'était simplement pour savoir si cela fonctionnait, et lorsque l'on clique sur image, cela nous affiche "undefined". Les valeurs ne s'enregistrent donc pas dans le tableau...

function enregistrement1(){
    som=new Array;
    document.getElementById('images').value=som[0];
    document.getElementById('armes').value=som[1];
    document.getElementById('armures').value=som[2];
    document.getElementById('accessoires').value=som[3];
    alert(console.log(som[0]))
  
};


Voilà, j'espère vraiment que vous pourrez nous aider là dessus, merci d'avance
Bonjour.
Je pense que le problème vient du fait que tu as :

var sol = new Array();
...
...
[I]alert(console.log(som[0]));[/i]

Tu appelles la variable som[0] alors que tu ne l'a déclaré nul part (d'après ton code).
Ton tableau est vide, il faut lui donner des valeurs (par défaut s'ils changeront plus tard)

var som = array('arme','armure',....);

avant de l'utiliser
Modifié par Dimtrovich (17 May 2017 - 16:15)
Justement, nous voulons que notre tableau soit vide. Il faut qu'il se renseigne quand la personne clique sur l'image/bouton, ce qui est censé se faire avec :

document.getElementById('images').value=som[0];
document.getElementById('armes').value=som[1];
document.getElementById('armures').value=som[2];
document.getElementById('accessoires').value=som[3];


le alert est là simplement à titre de vérification de l'enregistrement de la valeur, mais ne restera pas.


donc il faut mettre une valeur par défaut? Merci beaucoup nous allons essayer ! Smiley cligne
Modifié par som (17 May 2017 - 16:19)

function enregistrement(){
    var som=new Array();
    var som = array('images','armes','armures','accessoires');
    document.getElementById('images').value=som[0];
    document.getElementById('armes').value=som[1];
    document.getElementById('armures').value=som[2];
    document.getElementById('accessoires').value=som[3];
    alert(console.log(som[0]))
    
};



nous avons essayé, mais cette fois la fonction ne se lance plus du tout (plus de alert après le clic).

merci encore (et joyeux anniversaire! ;p )
Lorsque tu écrits
som a écrit :


document.getElementById('images').value=som[0];

Tu modifie la valeur de l'élément dont l'id vaut 'images' par som[0] or il n'existe pas.

Si je comprends ton problème, tu veut qu'en cliquant sur un bouton, les élément du tableau soient créés. Si c'est le cas il faut un truc de ce genre

<input type="button" value="select man" onclick="enregistrement('homme');" />

Côté JS

var som = array();
function enregistrement(selection){
   som[] = selection;
}

Et après tu pourra manipuler 'som' comme tu veut. Ses éléments seront ajouté dynamiquement. Mais le mieux est d'avoir des valeur par défaut au cas où tu aurait besoin de les utilisés sans l'événement.
Modifié par Dimtrovich (17 May 2017 - 16:50)
Si sa ne donne pas (d'après moi hein Smiley smile ) c'est parce que tu as som = new array(); en som = array(...); et en plus, tu la crée dans la fonction

Un tableau associatif sera idéale pour ça. J'ai élaboré ce code

<p> Sélectionner votre personnage
   <input type="button" value="Yugi" onclick="enregistrement ('personnage','Yugi');" />
   <input type="button" value="Naruto" onclick="enregistrement ('personnage','Naruto');" />
</p>
<input type="button" value="Afficher mon personnage actuel" onclick="alert(som['personnage']);" />

Et côté JS...

var som = {
   'personnage' : 'Vous n\'avez pas choisir le personnage'
};
function enregistrement (selection,valeur) {
   som[selection] = valeur;
}
Si sa ne donne pas (d'après moi hein Smiley smile ) c'est parce que tu as som = new array(); en som = array(...); et en plus, tu la crée dans la fonction

Un tableau associatif sera idéale pour ça. J'ai élaboré ce code

<p> Sélectionner votre personnage
   <input type="button" value="Yugi" onclick="enregistrement ('personnage','Yugi');" />
   <input type="button" value="Naruto" onclick="enregistrement ('personnage','Naruto');" />
</p>
<input type="button" value="Afficher mon personnage actuel" onclick="alert(som['personnage']);" />

Et côté JS...

var som = {
   'personnage' : 'Vous n\'avez pas choisir le personnage'
};
function enregistrement (selection,valeur) {
   som[selection] = valeur;
}
Merci, mais nous ne comprenons pas la fonction JS.
Nous avons donc essayer une nouvelle chose, qui ne marche toujours pas.... Smiley decu :

function enregistrement(m){
    
    Som = [classe,armes,armures,accessoires];
    Som[m]=
    document.getElementById('classe').value;
    Som[1]=
    document.getElementById('arme').value;
    Som[2]=
    document.getElementById('armure').value;
    Som[3]=
    document.getElementById('accessoire').value;
    
    alert(console.log(Som[m]))
    
};


Merci beaucoup d'avance
Modifié par som (19 May 2017 - 15:38)
Nous avons réussi à faire ce que nous voulions. Nous sommes passés par un autre moyen que les array finalement, merci beaucoup pour votre aide