Variable

Fermé
none61 Messages postés 82 Date d'inscription mercredi 23 avril 2014 Statut Membre Dernière intervention 14 avril 2020 - Modifié par jordane45 le 18/10/2016 à 17:43
none61 Messages postés 82 Date d'inscription mercredi 23 avril 2014 Statut Membre Dernière intervention 14 avril 2020 - 21 oct. 2016 à 12:36
Bonjour a tous,

Continuant mes investigations suite a un autre post, j'utilise le code javascript suivant:

<!--   script js pour reactualiser les id -->
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.0/jquery.min.js"></script>
<script type="text/javascript">

if (window.XMLHttpRequest) {
  // code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp = new XMLHttpRequest();
} else {
  // code for IE6, IE5
  xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}

xmlhttp.open("GET", "http://192.168.1.16/dlprogressbar/testj.xml",false);
xmlhttp.send();
xmlDoc = xmlhttp.responseXML;

document.write("<table border='1'>");
var x = xmlDoc.getElementsByTagName("valeur");
 for ( i = 0; i < x.length; i++) {
  var value = (x[i].getElementsByTagName("pourcent")[0].childNodes[0].nodeValue);
 }
document.write("</table>");
document.write(value);

if (value == "0"){
  $('#callback').load('http://192.168.1.16/dlprogressbar/value0.html').fadeIn("slow");
} else if (value == ""){
  //aprés quelques test
  //je pense qu une fois le telechargement termine le prodit en croix crachera et le fichier sera du coup implementé par du$
  $('#callback').load('http://192.168.1.16/dlprogressbar/value100.html').fadeIn("slow");
} else {
  $('#callback').load('http://192.168.1.16/dlprogressbar/value.html').fadeIn("slow");
  document.write(value);
}

</script>


EDIT: Ajout du LANGAGE dans les balises de code pour avoir la couleur (jordane45)

Le principe: Je parse(tant bien que mal) un fichier .xml et implemente ce qu'il contient a la variable "valeur"

Cependant mais "document.write" me retournent bien la valeur de value MAIS je reste bloqué sur la position else...

Lorsque je rentre manuellement une valeur a "value" mes if et else if fonctionnent bien...

Je ne comprend plus si quelqu'un voudrait bien m'expliquer ??? :-(

Merci d'avance

3 réponses

Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
18 oct. 2016 à 14:27
Salut,

Et quelle est la valeur de la variable value ?

Que donne un console.log(value); juste avant tes if/else ?

Bonne journée,
0
none61 Messages postés 82 Date d'inscription mercredi 23 avril 2014 Statut Membre Dernière intervention 14 avril 2020
18 oct. 2016 à 17:01
bonjour, merci pour ta réponse, j'ai je pense trouvé pourquoi ça ne fonctionnait pas...une erreur que je ne comprend pas mais bon ça a l'air de fonctionner..

J'ai enlevé les ""


if (value == "0"){


je pensais pourtant que les " étaient fait pour encadrer du texte....

Bref....sinon, sais tu comment je pourrais incruster un set-timeout? car je voudrai que mon code s'execute tout seul toutes les X secondes afin de rafraichir ma variable "value" ainsi que les conditions.

Cordialement
0
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
18 oct. 2016 à 17:23
Les guillemets permettent effectivement de délimiter du texte, mais nous ne savons toujours pas quelle est la valeur de la variable value.
Bref, si ça marche sans qu'on comprenne pourquoi...

Sinon pour exécuter ton code en boucle, il faut plutôt se tourner vers setInterval : https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setInterval
0
none61 Messages postés 82 Date d'inscription mercredi 23 avril 2014 Statut Membre Dernière intervention 14 avril 2020
Modifié par jordane45 le 18/10/2016 à 19:17
La vleur de la variable value n'est jamais la même...c'est pour cela que je ne t'avais pas mis la réponse.
ça valeur est en 0 et 99. j'ai un petit peux modifié mon if:

if (value == 0){
        $('#callback').load('http://192.168.1.16/dlprogressbar/value0.html').fa$
} else if ((value >= 1)&&(value <= 99)){
        //aprés quelques test
        //je pense qu une fois le telechargement termine le prodit en croix cra$
        $('#callback').load('http://192.168.1.16/dlprogressbar/value.html').fad$
} else {
        $('#callback').load('http://192.168.1.16/dlprogressbar/value100.html').$
}


Je vais voir du coté de ton lien pour que mon code s'execute en boucle car pour le moment rien ne fonctionne...

Merci a toi

EDIT: Ajout du LANGAGE dans les balises de code

pour avoir la couleur (jordane45)

0
none61 Messages postés 82 Date d'inscription mercredi 23 avril 2014 Statut Membre Dernière intervention 14 avril 2020
Modifié par jordane45 le 18/10/2016 à 19:19
j'ai essayé ceci:
<script type="text/javascript" src="[http://ajax.googleapis.com/ajax/
libs/jquery/1.3.0/jquery.min.js%22></script>
<script http://ajax.googleapis.com/ajax/
libs/jquery/1.3.0/jquery.min.js"></script>
<script|nofollow] type="text/javascript">

var intervalID;

function test(){
 intervalID = setInterval(mafonction, 1000);
}

        function mafonction() {
                        if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
                                xmlhttp = new XMLHttpRequest();
                        } else {// code for IE6, IE5
                                xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
                        }
                        xmlhttp.open("GET", "[http://192.168.1.16/dlprogressbar/testj.xml%22, http://192.168.1.16/dlprogressbar/testj.xml",|nofollow] false);
                        xmlhttp.send();
                        xmlDoc = xmlhttp.responseXML;
                        document.write("<table border='1'>");
                        var x = xmlDoc.getElementsByTagName("valeur");
                        for ( i = 0; i < x.length; i++) {
                        var value = (x[i].getElementsByTagName("pourcent")[0].childNodes[0].nodeValue);
                        }
                        document.write("</table>");


                if (value == 0){
                        $('#callback').load('http://192.168.1.16/dlprogressbar/value0.html').fadeIn("slow");
                } else if ((value >= 1)&&(value <= 99)){
$('#callback').load('http://192.168.1.16/dlprogressbar/value.html').fadeIn("slow");
                } else {
          $('#callback').load('http://192.168.1.16/dlprogressbar/value100.html').fadeIn("slow");
                }
        }
</script>


Mais le résultat me retourne une page vide...

Je me demandais...comment mes fonctions sont elle appelées? car le but et que cela se charge automatiquement à l'ouverture de la page...
Il ne faut pas quelque chose qui appellera les fonctions automatiquement ??

EDIT: Ajout du LANGAGE dans les balises de code

pour avoir la couleur (jordane45)

0
none61 Messages postés 82 Date d'inscription mercredi 23 avril 2014 Statut Membre Dernière intervention 14 avril 2020
20 oct. 2016 à 13:39
up
0
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
20 oct. 2016 à 17:35
Il faut effectivement appeler la fonction test() une première fois pour lancer le setInterval().
Pour exécuter cette fonction au chargement de la page, tu peux utiliser le code suivant :
window.addEventListener("load", test()); 
0
none61 Messages postés 82 Date d'inscription mercredi 23 avril 2014 Statut Membre Dernière intervention 14 avril 2020
21 oct. 2016 à 10:09
Bonjour et merci pour ta réponse,

J'ai donc essayé ceci:


<script type="text/javascript" src="http://ajax.googleapis.com/ajax/
libs/jquery/1.3.0/jquery.min.js"></script>
<script
type="text/javascript">

var intervalID;
window.addEventListener("load", test());

function test(){
intervalID = setInterval(mafonction, 1000);
}

function mafonction() {
if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
} else {// code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("GET", "http://192.168.1.16/dlprogressbar/testj.xml", false);
xmlhttp.send();
xmlDoc = xmlhttp.responseXML;
document.write("<table border='1'>");
var x = xmlDoc.getElementsByTagName("valeur");
for ( i = 0; i < x.length; i++) {
var value = (x[i].getElementsByTagName("pourcent")[0].childNodes[0].nodeValue);
}
document.write("</table>");


if (value == 0){
$('#callback').load('http://192.168.1.16/dlprogressbar/value0.html').fadeIn("slow");
} else if ((value >= 1)&&(value <= 99)){
$('#callback').load('http://192.168.1.16/dlprogressbar/value.html').fadeIn("slow");
} else {
$('#callback').load('http://192.168.1.16/dlprogressbar/value100.html').fadeIn("slow");
}
}
</script>


Après je n'ai peux être pas fait comme il faut mais la page s'affiche avec mon fonce d'écran puis devient blanche avec un trait noir tout en haut a gauche a la vertical qui s'agrandit.....bizard...
0
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
21 oct. 2016 à 11:25
Ce n'est pas le résultat attendu de ta progressbar ?

Ne connaissant pas le contenu de tes fichiers value0.html, value.html et value100.html, je ne peux pas savoir ni tester ton code final.
Vérifie si tu as des erreurs javascript dans la console de développement de ton navigateur.
0
none61 Messages postés 82 Date d'inscription mercredi 23 avril 2014 Statut Membre Dernière intervention 14 avril 2020
Modifié par none61 le 21/10/2016 à 13:11
ok je vais te poster mes pages comme ça tu pourras tester

-value0.html> elle sert a afficher qu'il n'y a pas de téléchargement en cour et donc je peux cliquer sur une icône ou l'autre pour choisir le type de téléchargement

-Soit tous télécharger
-Soit télécharger l'élément le plus récent


</style>
<!-- affiche le texte voulue a l'ecran-->
</br>
</br>
</br>
<center>
<h1>Aucun téléchargement en cours</h1>
</center>
</br>
</br>

<!--ceci sert a afficher l'icone de telechargement global celui de gauche-->
<span id ="icone" style="margin-left: 150px;" >
<img src="icone.png" onclick="clickmvall()" style="cursor:pointer;" />
</span>

<!--ceci sert a afficher l'icone de telechargement global celui de droite-->
<span id ="icone" style="margin-left: 680px;" >
<img src="icone.png" onclick="clickmvone()" style="cursor:pointer;" />
</span>

<br>

<span id = "text" style="display: inline">
<aa><b>télécharger tous les fichiers</b></aa><bb><b>télécharger le dernier fichier</b></bb>
</span>

<style>
aa {
display: inline
font-size: 2em;
margin-top: 0.67em;
margin-bottom: 0.67em;
margin-left: 120;
margin-right: 0;
font-weight: bold;
}

bb {
display: inline
font-size: 2em;
margin-top: 0.67em;
margin-bottom: 0.67em;
margin-left: 625;
margin-right: 0;
font-weight: bold;
}
</style>
<!-- script pour requeter mvall.sh afin de lancer la copie entière -->

<script type="text/javascript">
function clickmvall()
{
var xhr_object = null;

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.onreadystatechange = function() {
if(xhr_object.readyState == 4) {
var reponse= xhr_object.responseText;
document.getElementById("reponse").innerHTML=reponse;
}
}
xhr_object.open("GET","http://192.168.1.16/dlprogressbar/test.php",true); xhr_object.send();

}
</script>

<!-- script pour requeter mvone.sh afin de lancer la copie du dernier fichier téléchargé sur la seed -->

<script type="text/javascript">
function clickmvone()
{
var xhr_object = null;

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.onreadystatechange = function() {
if(xhr_object.readyState == 4) {
var reponse= xhr_object.responseText;
document.getElementById("reponse").innerHTML=reponse;
}
}

xhr_object.open("GET","http://192.168.1.16/dlprogressbar/test.php",true); xhr_object.send();

}
</script>



Pour le moment au lieu de requetter mon script pour telecharger, je requête juste test.php
Je changerais l'address une fois l'ensemble finis ;-)

value.html=> elle sert a afficher mes barres de progressions pendant mon téléchargement.


<html>
<br />
<br />
<h1>
<center>
progression general du telechargement
</center>

<!-- éléments de la page -->

<!-- ceci sert a afficher la barre pour la progression total -->
<div id="barre1">
</div>

<br>
<br>

<!-- ceci sert a afficher la barre pour la progression par fichier -->
<div id="barre2">
</div>

<h3>
<!-- ceci sert a afficher le nom du fichier en cour de telechargement -->
<div id="texte">
</div>
</h3>

<!-- script js pour reactualiser l'id barre1 -->
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/
libs/jquery/1.3.0/jquery.min.js"></script>
<script
type="text/javascript">
var auto_refresh = setInterval(
function ()
{
$('#barre1').load('http://192.168.1.16/dlprogressbar/barre1.php').fadeIn("slow");
}, 100); // refresh every 100 milliseconds

<!-- script js pour reactualiser l'id barre2 -->
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/
libs/jquery/1.3.0/jquery.min.js"></script>
<script
type="text/javascript">
var auto_refresh = setInterval(
function ()
{
$('#barre2').load('http://192.168.1.16/dlprogressbar/barre2.php').fadeIn("slow");
}, 100); // refresh every 100 milliseconds
</script>


<!-- script js pour reactualiser l'id texte -->
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/
libs/jquery/1.3.0/jquery.min.js"></script>
<script
type="text/javascript">
var auto_refresh = setInterval(
function ()
{
$('#texte').load('http://192.168.1.16/dlprogressbar/text.php').fadeIn("slow");
}, 100); // refresh every 100 milliseconds
</script>
</html>


-value100 elle sert a m'afficher que le ou les téléchargement sont finis


<html>
<br>
<br>
<br>
<br>
<center>
<h1>Le téléchargement est fini</h1>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>

<!--ceci sert a afficher pour retourner a la première page-->
<span id ="icone" >
<img src="bouton-Home.png" onclick="home()" style="width: 100px;" style="cursor:pointer;" />
</span>
</center

<!-- script pour retourer a la page d'acceuil en cliquant sur le bouton home -->

<script type="text/javascript">
function home()
{
var xhr_object = null;

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.onreadystatechange = function() {
if(xhr_object.readyState == 4) {
var reponse= xhr_object.responseText;
document.getElementById("reponse").innerHTML=reponse;
}
}

xhr_object.open("GET","http://192.168.1.16/dlprogressbar/test.php",true); xhr_object.send();

}
</script>


et la page d'index.html


<!--ceci est le css pour afficher le fond d'écran-->
<style>
body {
background-image: url(http://192.168.1.16/dlprogressbar/background.jpg);
background-position:
top left;
background-repeat: no-repeat;
background-attachment: fixed;
background-size: 100% 100%;
}
</style>


<!-- éléments de la page -->

<!-- ceci sert a afficher le text du fichier en cour de telechargement -->
<div id="callback">
</div>

<!-- script js pour reactualiser les id -->
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/
libs/jquery/1.3.0/jquery.min.js"></script>
<script
type="text/javascript">

function mafonction() {

if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
} else {// code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("GET", "http://192.168.1.16/dlprogressbar/testj.xml", false);
xmlhttp.send();
xmlDoc = xmlhttp.responseXML;
document.write("<table border='1'>");
var x = xmlDoc.getElementsByTagName("valeur");
for ( i = 0; i < x.length; i++) {
var value = (x[i].getElementsByTagName("pourcent")[0].childNodes[0].nodeValue);
}
document.write("</table>");
if (value == 0){
$('#callback').load('http://192.168.1.16/dlprogressbar/value0.html').fadeIn("slow");
} else if ((value >= 1)&&(value <= 99)){
//aprés quelques test
//je pense qu une fois le telechargement termine le prodit en croix crachera et le fichier sera du coup i$
$('#callback').load('http://192.168.1.16/dlprogressbar/value.html').fadeIn("slow");
} else {
$('#callback').load('http://192.168.1.16/dlprogressbar/value100.html').fadeIn("slow");
}

}
var auto_refresh = setInterval(
function test(){
mafonction}, 1000);

mafonction();
test();

</script>


Je ne te poste pas le fichier testj.xml car elle contient seulement un chiffre compris entre 0 et 100.
Ce chiffre est écris par un script bash .il est évolutif au fur et a mesure du téléchargement

Comme tu l'auras surement compris, l'ensemble me sert a avoir une visibilité sur mes téléchargement et aussi pour simplifier cette tache.
Au lieu de me connecter a mon Nas etc... j'aurais just a cliquer sur l'icône de mon choix..
Et madame pourra aussi s'en servir ;-)

Soit indulgent sur le codage car c'est la première fois que je fais ce genre de chose ;-)
0