récuprer un élément

Mammouth du PHP | 601 Messages

02 févr. 2007, 18:31

Bonjour,
je cherche à récupérer la liste des lien (le contenu) qui se trouve dans une liste :
Sa ne fonctionne pas.

Code : Tout sélectionner

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <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> html body{padding:0px;margin: 0px;} </style> </head> <body> <a href="#">aaaaa</a> <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 elementMenu=document.getElementById("menu"); if(elementMenu != null) { menu = elementMenu.document.getElementsByTagName("a"); if(menu.length == 0) { return false; } 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 { return false; } </script> </div> </body> </html>
Merci
http://xavier-artot.com
¨'°-.,¸¸,.-·²°'´¨'°-.,¸¸,.-·²°'´¨'°-.,¸¸,.-·°'´¨
système d'exploitation "Ubuntu 7.10"

Mammouth du PHP | 601 Messages

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
http://xavier-artot.com
¨'°-.,¸¸,.-·²°'´¨'°-.,¸¸,.-·²°'´¨'°-.,¸¸,.-·°'´¨
système d'exploitation "Ubuntu 7.10"

Mammouth du PHP | 601 Messages

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>
http://xavier-artot.com
¨'°-.,¸¸,.-·²°'´¨'°-.,¸¸,.-·²°'´¨'°-.,¸¸,.-·°'´¨
système d'exploitation "Ubuntu 7.10"

Eléphant du PHP | 71 Messages

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;

Mammouth du PHP | 601 Messages

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>
http://xavier-artot.com
¨'°-.,¸¸,.-·²°'´¨'°-.,¸¸,.-·²°'´¨'°-.,¸¸,.-·°'´¨
système d'exploitation "Ubuntu 7.10"

Mammouth du PHP | 601 Messages

04 févr. 2007, 01:07

Et bon ce que j'ai fais en js ne me récupère que un seul clic.
http://xavier-artot.com
¨'°-.,¸¸,.-·²°'´¨'°-.,¸¸,.-·²°'´¨'°-.,¸¸,.-·°'´¨
système d'exploitation "Ubuntu 7.10"

Mammouth du PHP | 601 Messages

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
http://xavier-artot.com
¨'°-.,¸¸,.-·²°'´¨'°-.,¸¸,.-·²°'´¨'°-.,¸¸,.-·°'´¨
système d'exploitation "Ubuntu 7.10"

ViPHP
ViPHP | 1961 Messages

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 ?
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Mammouth du PHP | 601 Messages

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 !
http://xavier-artot.com
¨'°-.,¸¸,.-·²°'´¨'°-.,¸¸,.-·²°'´¨'°-.,¸¸,.-·°'´¨
système d'exploitation "Ubuntu 7.10"

Mammouth du PHP | 601 Messages

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
http://xavier-artot.com
¨'°-.,¸¸,.-·²°'´¨'°-.,¸¸,.-·²°'´¨'°-.,¸¸,.-·°'´¨
système d'exploitation "Ubuntu 7.10"

ViPHP
ViPHP | 1961 Messages

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.
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Mammouth du PHP | 601 Messages

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.
Modifié en dernier par artotal le 04 févr. 2007, 04:28, modifié 1 fois.
http://xavier-artot.com
¨'°-.,¸¸,.-·²°'´¨'°-.,¸¸,.-·²°'´¨'°-.,¸¸,.-·°'´¨
système d'exploitation "Ubuntu 7.10"

ViPHP
ViPHP | 1961 Messages

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.
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Mammouth du PHP | 601 Messages

04 févr. 2007, 04:35

http://xavier-artot.com
¨'°-.,¸¸,.-·²°'´¨'°-.,¸¸,.-·²°'´¨'°-.,¸¸,.-·°'´¨
système d'exploitation "Ubuntu 7.10"

ViPHP
ViPHP | 1961 Messages

04 févr. 2007, 13:19

Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein