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

    Creazione di una riga nella tabella con DOM

    Ciao a tutti ho un problema a cui non riesco a venirne a capo...
    Vorrei che al click su un determinato link,mi si creasse con il dom una nuova riga nella tabella e mi creasse al suo interno 2 div...
    Una cosa relativamente semplice ma purtroppo con explorer non mi funziona!!
    all'ultima istruzione quando vado ad eseguire l'innerHTML mi dice 'errore di run time' mentre con mozilla funziona tutto alla perfezione....
    dove sbaglio secondo voi? Vi posto il codice della funzione..

    codice:
    var FavoriteExtra =
    {
    	// in questa funzione creo con DOM la struttura per metterci i contenuti con la paginazione
    	// ricevo in ingresso (tipo di contenuto extra cliccato(LK-IMG-ED), ID del contenuto)
    	openExtraLink: function(extraType, IDBox)
    	{
    		var mynewRigaName = 'rigaExtraType-'+IDBox; // nome della riga con i contenuti di paginazione
    		var mynewRigaRef = document.getElementById(mynewRigaName);
    		if (mynewRigaRef == null) // se il box con i contenuti di paginazione non esiste lo creo
    		{
    			var newExtraTR = document.createElement("tr"); // creo la nuova riga
    			var newExtraTD = document.createElement("td"); // creo la cella
    				newExtraTR.id = 'rigaExtraType-'+IDBox; // assegno l' id alla nuova riga
    			
    			var closeDiv = document.createElement("div"); // creo il div di chiusura
    			var closeDivA = document.createElement("a"); // creo il link per inserirlo nel div di chiusura
    				closeDivA.id = 'closeThis-'+IDBox+'-'+extraType;
    				closeDivA.href = '#no-up'; // assegno il valore di href
    				closeDivA.onclick = function(){ FavoriteExtra.closeExtraLink(extraType, IDBox) } // assegno la funzione di chiusura del tr al link
    			var closeDivMessage = document.createTextNode('Chiudi'); // creo il nodo testuale da inserire al link
    			
    				closeDivA.appendChild(closeDivMessage); // appendo il messaggio al link
    				closeDiv.appendChild(closeDivA); // appendo il link al div
    				newExtraTD.appendChild(closeDiv); // appendo il div alla td
    				
    			var newExtraDiv = document.createElement("div"); // creo il DIV dove inserisco i contenuti
    				newExtraDiv.id='extraDiv-'+IDBox; // assegno il nuovo id al DIV
    				
    				newExtraTD.appendChild(newExtraDiv); // appendo il div alla TD
    				newExtraTR.appendChild(newExtraTD); // appendo la TD alla riga TR
    			
    			var presentName = 'extra-'+IDBox;	// ID della riga già presente a cui dovrò appendere quella nuova
    			var presentChild = document.getElementById(presentName);
    				presentChild.appendChild(newExtraTR);
    				
    			// adesso devo eliminare il link che ha cliccato per espandere e sostituirlo con il solo testo
    			var clickLink = document.getElementById(extraType+'-'+IDBox); // punto al link (lo span che lo contiene)
    				clickLink.replaceChild(document.createTextNode(extraType), clickLink.firstChild); // lo rimuovo dalla TD che lo contiene
    			
    			var pagID = 'extraDiv-'+IDBox;
    				document.getElementById(pagID).innerHTML='inserisco il testo nel div';
    		}
    		else
    		{
    			var closeButton1 = document.getElementById('closeThis-'+IDBox+'-LK');
    			var closeButton2 = document.getElementById('closeThis-'+IDBox+'-IMG');
    			var closeButton3 = document.getElementById('closeThis-'+IDBox+'-ED');
    				if(closeButton1)
    				{
    					var closeButtonID = closeButton1.id; // ho un ID formato da 'closeThis-'+IDBox+'-LK'
    				}
    				else if(closeButton2)
    				{
    					var closeButtonID = closeButton2.id; // ho un ID formato da 'closeThis-'+IDBox+'-IMG'
    				}
    				else if(closeButton3)
    				{
    					var closeButtonID = closeButton3.id; // ho un ID formato da 'closeThis-'+IDBox+'-ED'
    				}
    					var splittedID = closeButtonID.split("-"); // lo splitto in modo da avere il nome della funzione che l'ha richiamato in POS 2
    					var functName = splittedID[2];
    				
    				FavoriteExtra.closeExtraLink(functName, IDBox);
    				FavoriteExtra.openExtraLink(extraType, IDBox);
    		}
    	},
    	closeExtraLink: function(extraType, IDBox)
    	{
    		// elimino la riga
    		var closeRow = document.getElementById('rigaExtraType-'+IDBox);
    			if(closeRow){
    				closeRow.parentNode.removeChild(closeRow); 
    			}
    		// ricreo il link
    		var rigenerateLink = document.createElement("a");
    			rigenerateLink.appendChild(document.createTextNode(extraType));
    			rigenerateLink.href = "#no-up";
    			rigenerateLink.onclick = function(){ FavoriteExtra.openExtraLink(extraType, IDBox) } // gli associo di nuovo la funzione per aprire il box
    			
    			var clickLink = document.getElementById(extraType+'-'+IDBox); // punto al link (lo span che lo contiene)
    				clickLink.replaceChild(rigenerateLink, clickLink.firstChild); // lo rimuovo dalla TD che lo contiene
    		
    	}
    };

  2. #2
    L'innerHTML non è stato formalizzato nello standard W3C qundi è probabile che non venga supportato da Explorer. Non per nulla è sconsigliato il suo utilizzo. Usa un semplice appendChild e vedrai che non avrai problemi.

  3. #3
    A dire il vero ho portato al minimo lo script e quindi ho tolto la creazione dei div per vedere se mi creava almeno la riga con all'interno il link per la chiusura ma non mi fa nemmeno...

    firefox nn mi da problemi al click mi crea la riga con all'interno il link "chiudi"

    explorer invece me lo segna cliccato ma non mi crea un bel niente.... eppure c'è l'append verso la riga presente...

  4. #4
    Ho risolto! era un problema di ID!!
    Grazie mille!

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.