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

    impostare immagine di sfondo di una cella di tabella

    Salve a tutti,
    ho questo piccolo problema dove non riesco proprio a capire cosa succede. Allora, partiamo dalla funzione Javascript che dovrebbe impostare, fra le altre cose, l'immagine di sfondo di una cella di una tabella:

    codice:
    function setPreview(td_id, background_image) {
    	// ottengo dal documento HTML l'elemento
    	// corrispondente alla cella della tabella
    	var table_cell = document.getElementById(td_id);
    	
    	
    	// se non ho nessuna immagine di sfondo
    	// imposto quella di default
    	if( background_image == '' ){
    		background_image = 'images/bgminiature3over.png';
    	}
    	
    	// imposto l'immagine di sfondo per questa cella
    	var newImage = new Image();
    	newImage.src =  background_image ;
    	table_cell.style.backgroundImage = newImage;
    	
    
    	//finito
    	return true;
    }

    quindi passo l'id del tag html, l'immagine di sfondo da mettere, e dovrei ottenere come risultato l'impostazione dell'immagine di sfondo. Nel mio codice html chiamo la funzione di cui sopra come segue:

    codice:
    <td   class="dsR263"  id="3663">
    <div align="center"  >
    <a href="..."  onmouseover="setPreview('3663','images/bgminiature3over.png');   																											   																											   onclick="window.focus()" 																											   target="_blank">
    
     ...																											    																											</a>
    																											
    																											
    																									</td>
    Ora se eseguo questo codice nel browser non mi viene segnalato nessun errore, ma l'immagine di sfondo non viene modificata. Se metto un breakpoint con firebug vedo che l'immagine passata alla funzione è corretta, che l'elemento table_cell punta alla cella corretta, ma quando faccio uscire il codice dalla funzione mi viene lanciato un errore che dice "table_cell.style is undefined". Se non uso il debugging firebug non mi segnala l'errore.
    Qualcuno sa indicarmi cosa sto sbagliando?

    Grazie,
    Luca

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Secondo me e perché gli passi l' id come stringa '3663' (gli id non devo iniziare con numeri) ma in realtà è un numero e visto che non è ammesso io farei cosi:

    <td id="_3663">.........</td>
    setPreview('_3663','images/bgminiature3over.png')

    P.S. Benvenuto sul forum.
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Grazie per la risposta, ma neanche con gli underscore o altri caratteri nell'id funziona. Ancora firebug mi mostra che table_cell punta alla cella giusta, ma poi si lamenta perché table_cell.style è undefined.
    Prima di questa mia funzione, c'era questa recuperata dalla history del progetto che andava:

    codice:
    function setPreview(tdid) {
    	var x=document.getElementById(tdid);
      	x.style.backgroundImage='url(images/bgminiature2over.png)';
    }
    L'unica cosa che ha la mia in più è la possibilità di specificare l'immagine come parametro, ma neanche usando una concatenazione
    codice:
    "url(" + image + ")"
    riesco a farla funzionare.

    P.S.
    grazie per il benvenuto!

  4. #4
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Prova cosi:
    codice:
    if( background_image == '' ){
    		background_image = 'images/bgminiature3over.png';
    	}	
    	// imposto l'immagine di sfondo per questa cella
    	table_cell.style.backgroundImage = 'url('+background_image+')';
    mi ero scordato che le immagini di sfondo vanno gestite diversamente.
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  5. #5
    Niente da fare, ho provato sia come dici tu che come:

    codice:
    var newImage = new Image();
    	newImage.src =  'url(' + background_image + ')';
    	table_cell.style.backgroundImage = newImage;
    ma il risultato è che l'immagine non cambia e firebug non segnala errori. Ancora, se metto un breakpoint sull'assegnamento della backgroundImage firebug mi segnala che table_cell.style is undefined.
    Ho provato anche a includere direttamente la funzione nella pagina html, anziché caricarla esternamente (ora risiede in un file suo) ma non cambia nulla.
    Qualche idea?

    Grazie,
    Luca

  6. #6
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Metti il link alla pagina pubblica, per capire se ci sono errori nella pagina.
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  7. #7
    Alla fine sembra che sia riuscito a far funzionare il tutto con questa riga:

    codice:
    document.getElementById(td_id).style.backgroundImage = 'url(' + background_image + ')';
    infatti ora nemmeno il debugger di firebug si lamenta e il cambio dell'immagine avviene regolarmente. Chissà perché non funzionava estraendo prima l'elemento e poi impostandone lo stile. Forse andava dichiarato come un tipo particolare?

    Luca

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 © 2025 vBulletin Solutions, Inc. All rights reserved.