Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    Visualizzare il contenuto di un nodo di testo

    Ciao a tutti...
    Ho questo codice e cerco di far visualizzare il valore che contiene hs. come posso fare???
    Inoltre il modo con cui ho attribuito il valore alla variabile appoggio è corretto??

    codice:
    var prev= null;
    var prev= null;
    //var appoggio= $_SESSION['menu'];
    
    
    window.onload=function(){
    if(document.getElementsByTagName && document.getElementById){
        document.getElementById("nav").className="jsenable";
        BuildList();
        }
    }
    
    function BuildList(){
    var hs=document.getElementById("nav").getElementsByTagName("h3");
    
    for(var i=0;i<hs.length;i++){
    	
        hs[i].onclick=function(){
    	   if(this.parentNode.text='Accettazione'){
    	              if(this.parentNode.className!="show"){
    				this.parentNode.className="show";
    				if(prev && prev!=this.parentNode) prev.className="hide";
    					prev=this.parentNode;
    				}
    			else this.parentNode.className="hide";
    			}
    	    }
    } 
    window.onload=function(){
    if(document.getElementsByTagName && document.getElementById){
        document.getElementById("nav").className="jsenable";
        BuildList();
        }
    }
    
    function BuildList(){
    var hs=document.getElementById("nav").getElementsByTagName("h3");
    for(var i=0;i<hs.length;i++){
    	//if(hs[i]==appoggio){
        hs[i].onclick=function(){
    	    //document.write(hs[i].nodeValue);
    		if(this.parentNode.text='Accettazione'){
    			if(this.parentNode.className!="show"){
    				this.parentNode.className="show";
    				if(prev && prev!=this.parentNode) prev.className="hide";
    					prev=this.parentNode;
    				}
    			else this.parentNode.className="hide";
    			}
    		}
        }
    }
    Grazie

    Sara

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    636
    intanto se prendi un nodo per id, non ha senso specificare il tagName ne tanto meno iterare, questo perchè l'id è univoco, e la selezione per id non ritorna un array ma un singolo elemento.

    Per assegnare la variabile php dovresti farne l'output

    var appoggio= <?php echo $_SESSION['menu']; ?>

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    636
    ... altra cosa className non dovrebbe andare su i.e

  4. #4
    Utente bannato
    Registrato dal
    Apr 2009
    Messaggi
    530
    Se non è numerale, ci vogliono anche gli apici, singoli ' o doppi "

    var appoggio = "&#60;?php echo $_SESSION['menu']; ?&#62;";

    e se esiste l' eventualità che $_SESSION['menu'] se ne porti dietro a sua volta, occorrerà fare l' escape al carattere " o ' altrimenti interferisce con quelli usati come delimitatori di stringa; ed è errore sufficiente a bloccare tutto lo script.

  5. #5
    Utente di HTML.it L'avatar di carlomarx
    Registrato dal
    Oct 2009
    Messaggi
    1,669
    Cmq, per visualizzare il contenuto di un nodo testo devi lanciare nodo.nodeValue (si fermerà al primo tag incontrato!), per visualizzare invece il contenuto di un nodo qualunque (non solo testo), devi fare più o meno così:

    codice:
    var sTxtContent, oRange;
    
    if (document.all) {
    	sTxtContent = oMyNode.innerText;
    } else {
    	oRange = document.createRange();
    	oRange.selectNodeContents(oMyNode);
    	sTxtContent = sTxtContent.toString();
    }
    oMyNode è il nodo. sTxtContent è testo il contenuto.

  6. #6
    Scusa se vi rispondo solo ora ma ho avuto un pò di problemi con il pc!!!
    Cmq vi ringrazio molto e vi chiedo un ulteriore aiuto perchè non ci riesco davvero

    X ENZACCIO
    devo fare l'escape, cioè??? Potresti farmi un esempio???

    La mia variabile contiene del testo...e io con nome_del_nodo.nodeValue non riesco a recuperarne il valore.Lo devo recuperare per controllarlo con quello che gli passo e vedere se sono uguali, se sono uguali allora la voce del menu deve essere abilitata altrimenti no!!!
    Potreste darmi una mano a modificare il codice perchè non so proprio dove mettere le mani???
    Ho fatto tutte le prove possibili ma non capendoci un tubo non so BENE nemmeno quello che faccio!!!
    Vi prego help me!!!


    Grazie Sara

  7. #7
    Vi posto di nuovo il codice del file javascript e quello del file php che genera il menu così potete capire un pò meglio!!

    expand.js (i commenti contengono alcune delle prove che ho fatto )
    codice:
    var prev= null;
    //var appoggio= ("<?php echo"$_SESSION['menu']";?>");
    //document.write(appoggio);
    //var appoggio= "Accettazione";
    
    //alert (appoggio);
    
    window.onload=function(){
    if(document.getElementsByTagName && document.getElementById){
        document.getElementById("nav").className="jsenable";
        BuildList();
        }
    }
    
    function BuildList(){
    var hs=document.getElementById("nav").getElementsByTagName("h3");
    //var testo1= hs.Child;
    //alert(testo1.nodeValue);
    //document.write(hs[1]);
    for(var i=0;i<hs.length;i++){
    	//if(hs[i]==appoggio){
        hs[i].onclick=function(){
    	    //document.write(hs[i].nodeValue);
    		//alert(testo1[i].nodeValue);
    		//if(this.parentNode.nodeValue='Accettazione'){
    			if(this.parentNode.className!="show"){
    				this.parentNode.className="show";
    				if(prev && prev!=this.parentNode) prev.className="hide";
    					prev=this.parentNode;
    				}
    			else this.parentNode.className="hide";
    			}
    		//}
        }
    }
    menu.php
    Codice PHP:
    <html>
    <head>
    <title>Menù</title>
    </head>
    <link rel="stylesheet" type="text/CSS" href="css.CSS">
    <script type="text/Javascript" src="expand.js"></script> 
    <body>
          <div id="nav">
        <ul>
        <?php
             session_start
    ();
             
    $c=oci_connect("XXX""XXX""XXX"); 
        
    $queryprima=oci_parse($c,"select m.cod_macro livello1, m.des_macro des_livello1
                                from con_macro m
                                order by m.ordine"
    );
        
    oci_execute($queryprima);
        
    $j=1;
        while ((
    $riga=oci_fetch_array($queryprimaOCI_NUM OCI_RETURN_NULLS))){
            echo(
    "[*]<h3>".$riga[1]."</h3><ul>");
            
    $macro=$riga[0];
            
    $queryseconda=oci_parse($c,"select m.cod_macro livello1, fu.des_funzione des_livello2    from con_macro m, con_menu me, con_funzioni fu where m.cod_macro = me.cod_macro and me.cod_funzione = fu.cod_funzione and m.cod_macro='$macro' order by m.ordine,me.ordine");
            
    oci_execute($queryseconda);
            
    $i=1;
            while ((
    $row=oci_fetch_array($querysecondaOCI_NUM OCI_RETURN_NULLS))){
            echo (
    '[*][url="prova_menu'.$j.'_'.$i.'.php"]'.$row[1].'[/url]');
            
    $i++;
            }
        
    $j++;
        }
    ?>
        [/list]
    </div>
    </body>
    </html>
    In pratica ho un menu le cui voci pengono popolate grazie a delle query.
    Il menu è a scomparsa e io vorrei che in base al profilo dell'utente, questo potesse accedere solo alla parte del menu che gli compete. Cioè se l'utente "pippo" ha come profilo "Accettazione" vorrei che gli si espandesse soltanto la voce "Accettazione" del menu. Può cliccare su tutte le voci ma deve trovare abilitata solo la voce Accettazione.
    Spero di essere stata sufficientemente chiara e spero di trovare qualche anima Pia che si muova a pietà e mi risolva questo enorme problema!!
    Vi ringrazio anticipatamente

    Sara

  8. #8
    Utente di HTML.it L'avatar di carlomarx
    Registrato dal
    Oct 2009
    Messaggi
    1,669
    Leggile però le risposte che ti diamo, sennò diventa snervante!

    codice:
    <!doctype html>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>Pagina vuota</title>
    <script type="text/javascript">
    function leggiRange() {
    	var sTxtContent, oRange, oMyNode = document.getElementById("esempio");
    
    	if (document.all) {
    		sTxtContent = oMyNode.innerText;
    	} else {
    		oRange = document.createRange();
    		oRange.selectNodeContents(oMyNode);
    		sTxtContent = oRange.toString();
    	}
    
    	alert(oRange.toString());
    }
    
    function leggiNodeValue() {
    	alert(document.getElementById("esempio").firstChild.nodeValue);
    }
    
    function leggiScorrendo() {
    	function ricorsiva(oNode) {
    		var sValue = "";
    		if (oNode.nodeType !== 3) {
    			for (var iNode = oNode.firstChild; iNode; iNode = iNode.nextSibling) {
    				sValue += iNode.nodeType === 3 ? iNode.nodeValue : ricorsiva(iNode);
    			}
    		} else { sValue = oNode.nodeValue; }
    		return sValue;
    	}
    
    	var oMyNode = document.getElementById("esempio");
    
    	alert(ricorsiva(oMyNode));
    }
    </script>
    <style type="text/css">
    .intLink {
    	cursor: pointer;
    	text-decoration: underline;
    	color: #0000ff;
    }
    </style>
    </head>
    
    <body>
    <p id="esempio">Contenuto di esempio. Questo testo è in corsivo. Quest'altro è tornato normale.</p>
    
    
    
    [ <span class="intLink" onclick="leggiRange();">Leggi per mezzo di un range</span> | <span class="intLink" onclick="leggiNodeValue();">Leggi con nodeValue</span> | <span class="intLink" onclick="leggiScorrendo();">Leggi scorrendo il nodeValue di tutti i nodi figli.</span>
    </body>
    </html>

  9. #9
    Io leggo le vostre risposte...sarò stupida ma il codice che mi hai postato:
    1) non riesco a capirlo, a leggerlo....per me è arabo...
    2) ho provato il codice e non capisco cosa c'entri con il mio caso...
    Tutto ciò fa sì che non riesco ad utilizzare il tuo aiuto e quindi a risolvere il mio problema! Io sono completamente a digiuno di javascript!!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.