Bonjour,

Voila je rencontre un petit problème avec mon code. ( ouais un petit comme on dit ^^ )

Je crée actuellement un système de "refresh" automatique d'un <div> via une function "java" : ".load"

<script language="javascript">

function actualise_div_messages_book_gold() {
    $(document).ready(function() {
        $('#messages_book_gold').load('/adresse #messages_book_gold');
    });
};

$('document').ready(function(){
    setInterval('actualise_div_messages_book_gold();', 1000); // 1 seconde est abusé je sais.
});

</script>

Ceci fonctionne très bien en soit ! mais je rencontre un problème. Dans mon<div> j'ai intégré du "javascript" dans un while

( code simplifié )

<div id="messages_book_gold">

<?php while ?>

<script language="javascript">
function changementTypeMessageVisibleOff<?php echo $donnees_messages['id']; ?>() { 
    var blockMessage<?php echo $donnees_messages['id']; ?> = document.getElementById("blockMessage<?php echo $donnees_messages['id']; ?>").id;
    if (blockMessage<?php echo $donnees_messages['id']; ?> == "blockMessage<?php echo $donnees_messages['id']; ?>") {
        document.getElementById("blockMessage<?php echo $donnees_messages['id']; ?>").style.display="none";
    }
};
</script>

<tr id="blockMessage<?php echo $donnees_messages['id']; ?>" name="blockMessage<?php echo $donnees_messages['id']; ?>">
    blabalablabalbalab
</tr>

<button type="button" onclick="changementTypeMessageVisibleOff<?php echo $donnees_messages['id']; ?>();">
     <i class="material-icons">done</i>
</button>

<?php endwhile; ?>

</div>

Ce qui est présent avant le "refresh du div", le javascript changementTypeMessageVisibleOff<?php echo $donnees_messages['id']; ?>();
est fonctionnel.

Comme vous l'avez deviné, j'arrive à cacher ma ligne grâce à display:none via mon buton. Une fois que le "refresh du div" s'effectue, les nouvelles données ( lignes ) s'affiche bien automatiquement sans refresh de la page internet entière, mais impossible d’exécuté le javascript changementTypeMessageVisibleOff<?php echo $donnees_messages['id']; ?>(); sur les nouvelles lignes qui viennent de s'affichées.

Dire que dans le code source de la page internet celui-ci est bien lu et possibilité de l'exécuté ( caché mes lignes ) sur les anciennes données ( ligne ) déjà présente.

J'ai pas l'habitude de demander de l'aide, excusez ma maladresse.

J'ai oublié quoi ? :/

Cordialement.

5 réponses


etorion
Réponse acceptée

Bonjour,

Remplace la balise tr par <span> ou <div>, car dans ton cas la balise tr sans une balise <table> qui l'encadre, n'affichera que le texte.
Autre chose, au lieu de créer une fonction par messge pourquoi ne pas en créer une seule et lui passer l'id du message que tu placerais en dessous de cette fonction par exemple actualise_div_messages_book_gold()

<script language="javascript">

function actualise_div_messages_book_gold() {
    $(document).ready(function() {
        $('#messages_book_gold').load('/adresse #messages_book_gold');
    });   
};

function changementTypeMessageVisibleOff(id) { 
    var blockMessage = document.getElementById("blockMessage"+id);
    if (blockMessage != null) {
        blockMessage.style.display="none";
    }

};
$('document').ready(function(){
    setInterval('actualise_div_messages_book_gold();', 1000); // 1 seconde est abusé je sais.
});
</script>

<div id="messages_book_gold">

<?php while ?>
<div id="blockMessage<?php echo $donnees_messages['id']; ?>" name="blockMessage<?php echo $donnees_messages['id']; ?>">
blabalablabalbalab
</div>

<button type="button" onclick="changementTypeMessageVisibleOff(<?php echo $donnees_messages['id']; ?>);">
     <i class="material-icons">done</i>
</button>

<?php endwhile; ?>

</div>

@+

Molios
Auteur

Merci de ta réponse,

Mais ton code est limite identique au mien et revient au même résultat et à la même problèmatique, je suis dans l'obligation de reload toute la page ( F5) si je veux que mes informations rajouter soit pris en compte dans la manip javascript. ( le refresh et le visuel et les informations php via le div et la function java sont bien ok )

Je ne suis pas très JS/ Ajax etc ... donc je lutte un peu malgré mes recherches sur internet.

Tu as essayer de regreffer l'évent lors du chargement des nouveaux éléments ?

Molios
Auteur

Je suis qu'un idiot ! ça m'apprendra à mettre du java dans un while ! j'ai donc tout retiré de mon while ( le java ) remis tous ceci en dehors de mon div ( avant le div ) et codé selon la méthode d'Etorion !

Merci de m'avoir aiguillé les gars, je suis parfois tête en l'air et têtu ! ^^

ce n'est pas du java ;-) utilisons les termes correcte.