darxen
Messages postés9Date d'inscriptiondimanche 30 mars 2008StatutMembreDernière intervention20 janvier 2010
-
20 janv. 2010 à 14:28
cs_jimmyhendrix
Messages postés34Date d'inscriptionsamedi 31 juillet 2010StatutMembreDernière intervention26 mars 2013
-
5 août 2010 à 17:15
Bonjour,
J'ai un problème tout bête mais malheureusement, je n'arrive pas à trouver la solution.
J'ai besoin de faire un traitement dans une fonction.
Je stock le résultat dans une variable (jusque la tout va bien)
sauf que je n'arrive pas a récupérer le contenu de cette variable en dehors de cette fonction.
J'ai beau mettre 'var' avant le nom de ma variable. Mettre des 'return' rien n'y fais.
Voici une version (ultra) simplifiée de ce que j'ai en tete :
<head>
<script type="text/javascript">
coucou = 'rien';
function Coucou(){
var coucou = 'coucou';
return coucou;
}
</script>
</head>
[ ICI]
<script>
document.write(coucou);
</script>
En gros il faudrait que quand je clique sur le lien ça affiche 'coucou' au lieu de 'rien'.
Dsl de poser une question aussi bête mais franchement la je sèche ...
PetoleTeam
Messages postés3426Date d'inscriptionlundi 26 décembre 2005StatutMembreDernière intervention14 janvier 201116 21 janv. 2010 à 19:14
Bonjour,
coucou = 'rien';// ceci est une variable globale
function Coucou(){
var coucou = 'coucou';// ceci est une variable locale
return (coucou);// ici on retourne la valeur de coucou locale mais coucou globale n'est pas modifié
}
pour modifier coucou globale il faut lui affecter la valeur retournée par la fonction Coucou()
coucou = Coucou();
maintenant si tu fais
[ ICI]
cs_jimmyhendrix
Messages postés34Date d'inscriptionsamedi 31 juillet 2010StatutMembreDernière intervention26 mars 20131 31 juil. 2010 à 15:46
J'ai le même problème, mais ca ne fonctionne toujours pas.
Sur mon site, j'ai un système de commentaire assez simple et qui fonctionne très bien. J'essaie maintenant d'afficher seulement les 5 derniers commentaires laissés, ce qui fonctionne aussi, mais je veux faire un lien pour que lorsqu'on clique, tous les commentaires s'affichent sur ma page et donc changer ma variable. Voici une partie de mon code :
var guitare=x.length-5;
for (i = x.length-1; i >= guitare; i--)
{
document.write("<tr><td ...
et ma fonction :
function voirsuitedown(){
var guitare=0;
return (guitare);
}
J'aimerais changer ma variable "guitare" pour mettre 0, ce qui afficherait tous mes commentaires à merveille ! J'ai mis sur mon bouton un onmousedown qui fonctionne bien si j'essaie d'autre fonction quelconque, mais onmousedown='guitare = voirsuitedown()' ne fonctionne pas.
et ça l'affiche un tableau avec les 5 plus récents commentaires inscrits dans mon fichier xml. Par contre, lorsque je rappelle la fonction à l'aide de mon bouton du genre onclick='Affiche_New(x.length-1, 0)', la page reload et je n'ai plus que mon tableau de commentaires et rien d'autre (les nouvelles données y sont par contre). J'aimerais lui spécifier un endroit ou s'éxécuter, mais j'ignore comment...
Est-ce que quelqu'un pourrait m'aider svp ? J'en arrache vraiment.
PetoleTeam
Messages postés3426Date d'inscriptionlundi 26 décembre 2005StatutMembreDernière intervention14 janvier 201116 2 août 2010 à 09:05
Bonjour,
document.write est à proscrire, il écrit dans le flux du document et de ce fait efface et remplace le contenu du document si celui ci est chargé.
Il est préférable, entre autre, d'utiliser la propriété innerHTML;
//-- Recup objet element dans lequel on veut mettre le texte
var Obj = document.getElementById('id_element');
//-- Exemple de texte
var szTxt = "Le texte a mettre !";
//-- mise du texte dans l'element
Obj.innerHTML = szTxt;
cs_jimmyhendrix
Messages postés34Date d'inscriptionsamedi 31 juillet 2010StatutMembreDernière intervention26 mars 20131 4 août 2010 à 03:58
J'ai trouvé un code en cherchant sur le net, je pourrais facilement le modifier, mais j'arrive pas à faire fonctionner le innerhtml.
<html>
<head>
<title>Sample code - Traversing an HTML Table with JavaScript and DOM Interfaces</title>
<script>
function start() {
// get the reference for the body
var body = document.getElementsByTagName("body")[0];
// creates a <table> element and a <tbody> element
var tbl = document.createElement("table");
var tblBody = document.createElement("tbody");
// creating all cells
for (var j = x.length-1; j >= x.length-5; j--) {
// creates a table row
var row = document.createElement("tr");
for (var i = 0; i < 2; i++) {
// Create a <td> element and a text node, make the text
// node the contents of the <td>, and put the <td> at
// the end of the table row
var cell = document.createElement("td");
var cellText = document.createTextNode("cell is row "+j+", column "+i);
cell.appendChild(cellText);
row.appendChild(cell);
}
// add the row to the end of the table body
tblBody.appendChild(row);
}
// put the <tbody> in the <table>
tbl.appendChild(tblBody);
// appends <table> into
body.appendChild(tbl);
// sets the border attribute of tbl to 2;
tbl.setAttribute("border", "2");
}
</script>
</head>
</html>
J'aimerais créer mon tableau dans "TABLEAU ICI", mais je n'y arrive vraiment pas. MERCI ENCORE POUR TON AIDE !
cs_jimmyhendrix
Messages postés34Date d'inscriptionsamedi 31 juillet 2010StatutMembreDernière intervention26 mars 20131 4 août 2010 à 20:31
J'ai commencé à le modifier légèrement, je croyais avoir retiré ce que j'avais fait, mais j'ai oublié ce morceau là. Avec mes légères modifications, c'est ca que ça donnait en vrai :
<html>
<head>
<title>Sample code - Traversing an HTML Table with JavaScript and DOM Interfaces</title>
<script>
var xmlDoc=null;
if (window.XMLHttpRequest)
{
xhttp=new XMLHttpRequest();
}
else // Internet Explorer 5/6
{
xhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xhttp.open("GET","comments.xml",false);
xhttp.send("");
xmlDoc=xhttp.responseXML;
var x=xmlDoc.getElementsByTagName("comment");
function start() {
// get the reference for the body
var body = document.getElementsByTagName("body")[0];
// creates a <table> element and a <tbody> element
var tbl = document.createElement("table");
var tblBody = document.createElement("tbody");
// creating all cells
for (var j = x.length-1; j >= x.length-5; j--) {
// creates a table row
var row = document.createElement("tr");
for (var i = 0; i < 2; i++) {
// Create a <td> element and a text node, make the text
// node the contents of the <td>, and put the <td> at
// the end of the table row
var cell = document.createElement("td");
var cellText = document.createTextNode("cell is row "+j+", column "+i);
cell.appendChild(cellText);
row.appendChild(cell);
}
// add the row to the end of the table body
tblBody.appendChild(row);
}
// put the <tbody> in the <table>
tbl.appendChild(tblBody);
// appends <table> into
body.appendChild(tbl);
// sets the border attribute of tbl to 2;
tbl.setAttribute("border", "2");
}
</script>
</head>
guitare
</html>
Sinon tu peux seulement remplacer mon x.length-1 et -5 par 0 et 5 et mettre j++. À l'avenir j'ouvrirai un autre topic, c'est promis ! Merci !