récuprer un élément

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : récuprer un élément

par artotal » 04 févr. 2007, 17:01

sa n'a pas de rapport direct avec mon problème, mais sont code est intéressant, super bien écrit, notamment la récupération de la boucle dans un tableau. L'ennui c'est que je n'est pas put l'essayer sans la table, j'ai pas des données, et la structure on ne peux pas la deviner, j'ai essayer.
Pour mon problème j'ai compris que sa venait des langages et leur intéraction.
en effet on peux manipuler des données javascript en php, mais pas le contraire, puisque le php est executer avant le javascript. Donc manipuler des variable php en javascript c'est compliqué voir impossible.

par Ajoloca » 04 févr. 2007, 13:19

par artotal » 04 févr. 2007, 04:35

par Ajoloca » 04 févr. 2007, 04:21

Re,

D'après le message tu as compris.
Je te déconseille d'utiliser prototype pour si peu de choses.
Si tu as l'intention d'aller plus loin dans le sens WEB 2, OK, sinon c'est charger toute une bibliothèque pour une fonction.
De plus tu verras que AJAX c'est juste la manipulation d'un objet JS.

Fais une recherche dans le forum, je crois que Cyrano a fait un superbe tuto sur ce sujet.

par artotal » 04 févr. 2007, 04:03

c'est exactement ça que je veux faire.
Effectivement on click et on a les liens il reste à intégrer ça à l'ajax. Mon code précédent ne fonctionne pas. Enfin avec ajax mais je crois que je vais laisser tomber prototype.
Peut être que de tout faire c'est mieux.
En faite dans l'idéal je voudrai que tout soit dynamique, donc je boucle ma table il en resort des valeurs et celle ci sont passer dans l'url ce qui me permet d'appeler mon contenu au clic sur le lien
Traditionnellement en php sa donne ça :
<?
include ("inc/connexion.php");
$query = "SELECT * FROM pages order by page";
$result = mysql_query($query, $lien);
while($ok = mysql_fetch_array($result))
{
echo '<li><a id="lien" href="'.$_SERVER['PHP_SELF'].'?page='.$ok['page'].'"'.$ok['page'].'</a></li>';
?>
Enfin à part le $_SERVER['PHP_SELF'], d'habitude on charge une page entière et donc la valeur en paramètre va permettre de faire un test sur la page réceptionner pour lancer une nouvelle boucle et récupérer le contenu, un texte par exemple, et je veux faire pareil mais en ajax.

et donc se qui me bloque c'est de passer le lien cliquer en paramètre, mais j'attend ta solution, parceque je sens que je pose mal le problème.

par Ajoloca » 04 févr. 2007, 03:04

Quand tu dis la valeur, de quelle valeur tu parles ?
L'attribut href ou bien la valeur affichée de l'élément qui vient d'être cliqué ?
Ou encore l'ensemble du contenu de l'élément <ul> ???
regarde ce bout de code, il sort sur une boite d'alerte la liste des <a> dans ton <ul>, si tu cliques sur un lien de l'ul il te sort l'URI à passer en paramètre à AJAX (fais un copier/coller, tu comprendras mieux).

Code : Tout sélectionner

<html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Document sans titre</title> <style type="text/css"> html body { padding:0px; margin: 0px; } </style> <script type="text/javascript"> function getMenuElements(){ var listeLiens = 'Pas d\'éléments trouvés !'; if(elementMenu=document.getElementById("menu")) { var menu = elementMenu.getElementsByTagName("li"); if(menu.length){ for(var i = 0, listeLiens = ''; i < menu.length; i++) { listeLiens += menu[i].innerHTML + "\n"; } } } alert("Liste des liens :\n" + listeLiens); return; } function lienClique(url){ alert("Ici j'appelle AJAX avec paramètre : " + url); } </script> </head> <body> <a href="#">Lien avant l'ul (le click n'a pas d'effet)</a> <div> <ul id="menu"> <li><a href="JavaScript:lienClique('http://www.adr_1.eu/');">Lien ul 1</a></li> <li><a href="JavaScript:lienClique('http://www.adr_2.eu/');">Lien ul 2</a></li> <li><a href="JavaScript:lienClique('http://www.adr_3.eu/');">Lien ul 3</a></li> <li><a href="JavaScript:lienClique('http://www.adr_4.eu/');">Lien ul 4</a></li> </ul> <p><a href="Javascript:getMenuElements();">Cilck pour voir les liens dans l'ul</a></p> </div> </body> </html>
À partir de là dis-mois ce que veux.
Si c'est dans ce sens, je t'explique après le fonctionnement.

par artotal » 04 févr. 2007, 02:56

pour répondre à ta question, c'est pour mettre la valeur cliquer en paramètre de la requete ajax, de cette façon, mes page en php seront inclus en ajax et tout est dynamique
lol

par artotal » 04 févr. 2007, 02:47

j'ai trouvé je me suis servis d'une méthode de prototype.

http://creatif-web.be/developpeur/dossier_ajax4.php
@ajolca
je voulais récupérer une liste en php d'une table pour faire de l'ajax, donc fallait transformer ça en js, ma solution semble un peu lourde, j'utilise la méthode
Event.observe()

http://prototype.js.le-developpeur-web. ... erve().php

ce qui donne en code :
echo '<script type="text/javascript">';
$i=1;
$query = "SELECT * FROM pages order by page";
 $result = mysql_query($query, $lien);
	while($ok = mysql_fetch_array($result))
	{
	echo 'document.write("<li><a id=\"'.$ok['page'].'\" href=\"javascript:void(0);\">['.$ok['page'].']</a></li>");';
	$fonction=$ok['page'].$i++;
?>


function <?php echo $fonction;?>()
{	
	Event.observe("<?php echo $ok['page'];?>","click",envoie);
	function envoie()
	{
		alert("<?php echo $ok['page'];?>");	
	}
}
</script>


<script type="text/javascript">
function addLoadEvent(func)
{
   var oldonload = window.onload;
   if(typeof window.onload != 'function')
   {
      window.onload = func;
   }
   else
   {
      window.onload = function()
      {
         oldonload();
         func();
      }
   }
}

addLoadEvent(<?php echo $fonction;?>);
<?php }?>
</script>
</ul>
<script type="text/javascript">
var ajax = new Ajax.Updater(
					    'datestr',        // DIV id (XXX: doesnt work?)
					    '/developpeur/salut_php.php',        // URL
					    {                // options
					    method:'get', parameters:'page=23', 
					    onComplete: showResponse, evalScripts:true
						});

function showResponse(req)
{
	$('datestr').innerHTML = req.responseText;
	new Effect.toggle('datestr', 'BLIND');
	new Effect.Highlight('datestr', { startcolor:'#3366FF', endcolor:'#33CCFF', restorecolor:'#fff', duration: 1});
}
</script>
<p>2/ <div id="datestr" style="display:none;">hahaha</div></p>
parceque si j'ai trente lien sa risque d'être lourd, faut voir, moi mon FF prend 350mo, je ne peux pas trop m'en redre compte, sachant qu'il va y avoir autour de 20 liens pour se site !

par Ajoloca » 04 févr. 2007, 02:00

Bonsoir,

Je ne comprends pas ce que tu cherches à faire.

Tu voudrais récupérer quoi ?
Pour le mettre où, et en faire quoi ?

par artotal » 04 févr. 2007, 01:33

par contre j'ai fais un test et j'ai bien au clic du lien l'alert qui se déclanche
Mais sa ne récupère pas le clic
<ul id="menu">
<li><a href="#">aaaaa</a></li>
<li><a href="#">bbbbb</a></li>
<li><a href="#">ccccc</a></li>
<li><a href="#">ddddd</a></li>
</ul>
<script type="text/javascript">
var element=document.getElementById("menu");
if(element != null)
{	
	menu = element.getElementsByTagName("a");
	var i;
	var str='';
	for(i = 0; i< menu.length; i++) 
	{	
		//var lien;
		var lien= menu[i].innerHTML;
		//document.write(lien+"clic ici<br />");
		document.write(lien);
		alert(str);
	}
}
/*window.onload= function () {
	appel();
}*/
</script>
Viens de me rendre compte que rien ne fonctionne sous ie

par artotal » 04 févr. 2007, 01:07

Et bon ce que j'ai fais en js ne me récupère que un seul clic.

par artotal » 04 févr. 2007, 01:05

En faite j'ai trouvé une réponse :
<ul id="menu">
<li><a href="#">aaaaa</a></li>
<li><a href="#">bbbbb</a></li>
<li><a href="#">ccccc</a></li>
<li><a href="#">ddddd</a></li>
</ul>
<script type="text/javascript">
var element=document.getElementById("menu");
	if(element != null)
	{
		menu = element.getElementsByTagName("a");
		if(menu.length == 0) 
		{
			// vide
			document.write("Vide");
		}
		else
		{
			var i;
			//menu.onclick=function() 
			//{
			var str='';
				for(i = 0; i< menu.length; i++) 
				{	
					//var lien;
					var lien= menu[i].innerHTML;
					document.write(lien+"clic ici<br />");
					alert(str += lien);
					//document.write(lien+"<br />");
				}
			//}
		}
	}
	else
	{ 
		// vide
		document.write("Vide");
	}

</script>

par Chakra Spirit » 03 févr. 2007, 23:04

Rebonjour, :wink:

Tu peux faire ainsi :

Code : Tout sélectionner

function fnInit() { if(!document.getElementsByTagName) return; var oUl = document.getElementsByTagName('ul')[0]; if(!oUl) return; var oLi = oUl.getElementsByTagName('li'); if(oLi.length == 0) return; var aLink = [], iI = 0, iCount = oLi.length; for(; iI < iCount; iI++) if(oLi[iI].getElementsByTagName('a')[0]) { aLink[iI] = oLi[iI].getElementsByTagName('a')[0].lastChild.data; alert("aLink[" + iI + "] contient " + aLink[iI]); } } window.onload = fnInit;

par artotal » 02 févr. 2007, 19:08

C'était l'erreur

Code : Tout sélectionner

menu = element.getElementsByTagName("li");
Mais comment faire si je veux récupérer chaque lien dans une valeur differente ?

Code : Tout sélectionner

<ul id="menu"> <li><a href="#">aaaaa</a></li> <li><a href="#">bbbbb</a></li> <li><a href="#">ccccc</a></li> <li><a href="#">ddddd</a></li> </ul> <script type="text/javascript"> var element=document.getElementById("menu"); if(element != null) { menu = element.getElementsByTagName("a"); if(menu.length == 0) { // vide document.write("Vide"); } else { //document.write("lise des liens 'a' dans l'élément 'menu' :<br />"); var i; for(i = 0; i< menu.length; i++) { //var lien; var lien= menu[i].innerHTML; document.write(lien); } } } else { // vide document.write("Vide"); } </script>

Re: récuprer un élément

par artotal » 02 févr. 2007, 19:04

Bonjour,
je cherche à récupérer la liste des lien (le contenu) qui se trouve dans une liste :
http://creatif-web.be/developpeur/test.php#
Sa ne fonctionne pas.

Code : Tout sélectionner

<ul id="menu"> <li><a href="#">aaaaa</a></li> <li><a href="#">bbbbb</a></li> <li><a href="#">ccccc</a></li> <li><a href="#">ddddd</a></li> </ul> <script type="text/javascript"> var element=document.getElementById("menu"); if(element != null) { menu = element.document.getElementsByTagName("li"); if(menu.length == 0) { // vide document.write("Vide"); } else { document.write("lise des liens 'a' dans l'élément 'menu' :<br />"); var i; for(i = 0; i< menu.length; i++) { document.write(menu[i].innerHTML, "<br />"); } } } else { // vide document.write("Vide"); } </script>
Merci