JeuWeb - Crée ton jeu par navigateur
Un tit problème de javascript - 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 : Un tit problème de javascript (/showthread.php?tid=3659)



Un tit problème de javascript - gameprog2 - 09-02-2009

Salut^^
je fais appel à vous pour un truc qui est peut-être tout bête en javascript, mais heu...j'arrive pas à trouver, j'ai l'esprit complètement gris après cette nuit blanche de programmation suivi du boulot à 5h :/ (ouais je sais chui fou :pleure2Smile

Alors j'ai une fonction affiche() dont le rôle est d'afficher un carré de cases où chaque case est un DIV et l'ensemble contenu dans un grand DIV carré lui aussi de taille (3 x 32px) X (3 x 32px)...donc 96 X 96 pixels.

Hors ça ne fait pas du tout un carré de DIV sur la page :/

quand je l'appelle ça me fait une page blanche avec la chaine ident affichée à chaque ligne pendant un nombre de fois égal à :
mapy * mapx ... donc ça fait 3 x 3 = 9 dans mon code.

De plus la page semble indéfiniment en chargement (le sablier souris tourne)
La fonction marche bien quand je fais exécuter la fonction par mon code JS sans l'appeler à partir du bouton.


Code :
// tellement chui déprimé j'ai essayé avec et sans le VAR (au cas où)
var mapx=3;
var mapy=3;

function affiche()
{
document.write('<div class="lamap">');
  for (y=0;y<mapy;y++)
  {
  for (x=0;x<mapx;x++)
    {
    ident=y+'et'+x;
    //ecrit les Div
    document.write('<div class="sol">'+ident+'</div>');
    //('<div class="sol" id="'+ident+'">'+ident+'</div>');
    }
  }
document.write('</div>\n');
}

Code appelant :
Code :
<input type="button" value="Créer" onclick="affiche();" />

Le CSS :
Code :
<style>
Body
{
background-color:yellow;
}
.lamap
{
width:96px;
height:96px;
background-color:black;
}
.sol
{
width:32px;
height:32px;
float :left;
color:red;
background-color:blue;
}
</style>



RE: Un tit problème de javascript - Anthor - 09-02-2009

Tout à fait normal.

En mettant un document.write dans une fonction, lorsque tu executes la fonction, tu vides le DOM, le navigateur attend alors que la page se charge...


RE: Un tit problème de javascript - gameprog2 - 09-02-2009

Merci Antor^^
Mais pourquoi cela ne le fait-il pas quand j'exécute la fonction sans l'appeler par un bouton ?
Citation :tu vides le DOM



RE: Un tit problème de javascript - Anthor - 09-02-2009

https://developer.mozilla.org/fr/DOM/document.write

Citation :Écrire dans un document qui a déjà été chargé sans appeler document.open() provoquera un appel automatique à document.open. Une fois l'écriture terminée, il est recommandé d'appeler document.close() pour indiquer au navigateur qu'il peut terminer de charger la page. Le texte fourni est analysé et intégré à la structure du modèle de document. Dans l'exemple ci-dessus, l'élément h1 devient un nœud dans le document.

Si l'appel à document.write() est intégré directement dans le code HTML, il n'appellera pas document.open(). Par exemple :
Code PHP :
<?php 
<div>
<
script type="text/javascript">
document.write("<h1>Main title</h1>")
</
script>
</
div>
ne provoquera pas l'effacement complet du document existant mais un nouveau nœud h1 sera simplement inséré au sein de l'élément div parent.



RE: Un tit problème de javascript - gameprog2 - 09-02-2009

Anthor : Un grand grand merci ^^


RE: Un tit problème de javascript - Anthor - 10-02-2009

De rien, tu penseras à mettre résolu Smile


RE: Un tit problème de javascript - gameprog2 - 11-02-2009

Citation :De rien, tu penseras à mettre résolu
Oui bien sûr merci^^
Mais heu...comment on fait ?


RE: Un tit problème de javascript - Anthor - 11-02-2009

Tu édites ton premier message, tu modifies le titre.