JeuWeb - Crée ton jeu par navigateur
[Résolu][Javascript] document.getElementById('').onclick - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : [Résolu][Javascript] document.getElementById('').onclick (/showthread.php?tid=2881)

Pages : 1 2


[Résolu][Javascript] document.getElementById('').onclick - Raitosan - 13-08-2008

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.


RE: Problème JS: document.getElementById('').onclick - Raitosan - 13-08-2008

a modifier l' affichage des divs, changer leurs fonds, et transmettre des données dans un fichier php


RE: Problème JS: document.getElementById('').onclick - Raitosan - 13-08-2008

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';
}


RE: Problème JS: document.getElementById('').onclick - Raitosan - 13-08-2008

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);
}


RE: Problème JS: document.getElementById('').onclick - Raitosan - 13-08-2008

equiper(objet_place, nb)

event c' est pour récupérer les points x et y de la souris -_-


RE: Problème JS: document.getElementById('').onclick - Raitosan - 13-08-2008

ok je vais essayer, je te dit quoi apres(en editant mon message)
Hum... apparement je ne peut pas... à cause de sa:
<?php
$i = 1;
$top = 182;
$left = -31;
while($i <= 20)
{
if($i == 6 OR $i == 11 OR $i == 16)
{
$top += 39;
$left -= 152;
}
else
{
$left += 38;
}
$inventaire = mysql_query("SELECT * FROM inventaire WHERE places='".$i."' AND joueur='Raitosan'");
$inventaire = mysql_fetch_array($inventaire);
if($inventaire == true)
{
$nombre = $inventaire['nb'];

$objet = mysql_query("SELECT * FROM objets WHERE id='".$inventaire['id_objet']."'");
$objet = mysql_fetch_array($objet);

$equipement = mysql_query("SELECT * FROM equipements WHERE id='".$inventaire['id_equipement']."'");
$equipement = mysql_fetch_array($equipement);

if($inventaire['id_objet'] != "")
{
$image = "url(".$objet['image'].".png)";
}
else
{
$image = "url(".$equipement['image'].".png)";
}
}
else
{
$image = "none";
$nombre = $inventaire['nb'];
}
?>
<div id="<?php echo $i; ?>" style="width:36px;height:36px;margin-top:<?php echo $top; ?>px;margin-left:<?php echo $left; ?>px;position:Absolute;background-image:<?php echo $image; ?>;background-repeat:no-repeat;font-size:10px;line-height:6;padding-left:2px;" onclick="menu(event, <?php echo $i; ?>, <?php if($inventaire['id_objet'] == ""){echo '0';}else{echo $inventaire['id_objet'];} ?>, <?php echo $inventaire['nb']; ?>)" onmouseover="efface_menu()"><?php echo $nombre; ?></div>
<?php
$i++;
}
?>

je ne peut pas modifier les variables globales... car il faudrais pouvoir les modifiers pour chaques div et les modifiers lorsque l' on clique dessus...


RE: Problème JS: document.getElementById('').onclick - Raitosan - 13-08-2008

sa marche pas ouinnnn


RE: Problème JS: document.getElementById('').onclick - Raitosan - 13-08-2008

Je sais, mais si tu regarde bien, il ya une boucle en php, et il fait plein de div pour stocker les objets, donc pour modifier les variables pour chaqun des div... c' est impossible, mais, je me demandais si par exemple, on pourrait modifier une variable par onmouseover?


RE: Problème JS: document.getElementById('').onclick - Raitosan - 13-08-2008

sa ne marche pas...
le but en fait, c' est juste d' actualiser le nombre d' objet que l' on possede, mais je ne sais pas comment faire la...


RE: Problème JS: document.getElementById('').onclick - Raitosan - 13-08-2008

non, en plus tu as enlever <?php echo $i; ?>, alors qu' il doit y être...