JeuWeb (JeuPHP) - Crée ton jeu par navigateur

Version complète : [Résolu][Javascript] document.getElementById('').onclick
Vous consultez actuellement la version basse qualité d'un document. Voir la version complète avec le bon formatage.
Pages : 1 2 3
Bonjour, j' ai un problème avec le Javascript.

Voici ce qui ne fonctionne pas. le problème c' est que objet_place et nb sont des variables, donc je ne peut pas faire .onclick = menu(); et .onclick = function(){menu(event, objet_place, '0', nb);} ne marche pas non plus(j' ai chercher sur google...)

document.getElementById(objet_place).onclick = menu(event, objet_place, '0', nb);

j' ai fait cela, pour actualiser la variable "nb" qui se trouve dans la fonction. Parceque sinon la variable "nb" reste pareil et ne change pas le nombre...

Voila, en espérant que vous puissiez m' aider...
Merci d' avance.
C'est marrant ça au boulot un collègue avait exactement le même problème.
Je lui ai résolu en lui montrant qu'il pouvait très bien faire sans ses variables.

Déjà objet_place ne te sert à rien tu peux utiliser this, à quoi te sert event ?

Edit : Enfin non tu ne peux pas utiliser this tu es pas dans un Framework, enfin a quoi te servent ces variables ?
a modifier l' affichage des divs, changer leurs fonds, et transmettre des données dans un fichier php
Donne ta fonction menu
function menu(event, objet_place, objet_type, nb)
{
var x = event.clientX;
var y = event.clientY;
document.getElementById('menu_choix').style.top = y;
document.getElementById('menu_choix').style.left = x;
if(objet_type != "")
{
document.getElementById('menu_choix').innerHTML = '<div id="menu_choix2" onclick="utiliser('+objet_place+')">Utiliser</div><div id="menu_jeter" onclick="jeter('+objet_place+', '+nb+', '+objet_type+')">Jeter</div><div id="menu_jeter" onclick="jeterTout('+objet_place+')">Jeter Tout</div>';
}
else
{
document.getElementById('menu_choix').innerHTML = '<div id="menu_choix2" onclick="equiper('+objet_place+', '+nb+')">Equiper</div><div id="menu_jeter" onclick="jeter('+objet_place+', '+nb+', '+objet_type+')">Jeter</div><div id="menu_jeter" onclick="jeterTout('+objet_place+')">Jeter Tout</div>';
}
document.getElementById('menu_choix').style.backgroundColor='#9f9fff';
document.getElementById('menu_choix').style.border='1px solid black';
}
Je n'ai pas l'impression que tu utilises la bonne méthode.
Tu devrais plutôt créer tous tes div et les cacher/montrer ensuite.
enfait, la fonction menu sert à affiche un menu quand on clique sur un objet(dans l' inventaire). Ce menu propose selon l' objet, d' utiliser, d' équiper, de jeter ou de tout jeter... c' est pour sa que sa doit être invisible, mais ce n' est pas le problème, cette fonction marche bien -_-, c' est juste le document.getElementById(objet_place).onclick = menu(event, objet_place, '0', nb);
voici la fonction qui a cet element:
function equiper(objet_place, nb)
{
efface_menu();
var xhr_object = null; // On crée déjà la variable xhr_object

if(window.XMLHttpRequest) // Firefox
xhr_object = new XMLHttpRequest();
else if(window.ActiveXObject) // Internet Explorer
xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
else { // XMLHttpRequest non supporté par le navigateur
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
return;
}

xhr_object.open("GET", "equiper.php?objet_place="+objet_place+"", true); // On ouvre le script php en designant si on utilisera GET ou POST comme méthode, dans notre cas on va utiliser GET, ensuite on mets le chemin du script php, puis on dit si on veut utiliser l'asynchrone(true) ou le synchrone(false, qui signifie figer le temps de la requete qui risque de bloquer le visiteur) donc on vas prendre l'asynchrone donc on met true.

xhr_object.onreadystatechange = function() { // Si le readyState change alors on execute ce qui est en bas
if(xhr_object.readyState == 4 && xhr_object.status == 200) // Si le readyState vaut 4 ce qui veut dire que les données ont été transmise et si le Status vaut 200 ce qui signifie que le navigateur n'a aucun problème
{
if(xhr_object.responseText != '')
{
var message_recu = xhr_object.responseText;
var tab = message_recu.split(" ");

if(tab[0] == "boucle")
{
if(tab[3] == 1)
{
document.getElementById(''+objet_place+'').innerHTML = '';
document.getElementById(''+objet_place+'').style.backgroundImage = 'none';
document.getElementById(''+objet_place+'').onclick = '';

document.getElementById(''+tab[2]+'').style.backgroundImage = 'url('+tab[1]+'.png)';
}
else
{
nb--;
document.getElementById(''+objet_place+'').innerHTML = nb;
document.getElementById(''+tab[2]+'').style.backgroundImage = 'url('+tab[1]+'.png)';
document.getElementById(objet_place).onclick = menu(event, objet_place, '0', nb);
}
}
}
else
{
alert('Un équipement est deja équiper!');
}
}
}

xhr_object.send(null);
}
document.getElementById(objet_place).onclick = menu(event, objet_place, '0', nb);
Il est censé les trouver où tes variables ?
equiper(objet_place, nb)

event c' est pour récupérer les points x et y de la souris -_-
Ah oui pardon.
Il faut que tu accèdes globalement aux variables.
Ne pas les passer en arguments et les lire globalement.
Pages : 1 2 3
URLs de référence