|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Mar 2009
Messaggi: 18
|
utilizzare evento onload con div [Javascript]
Ciao,
vediamo se qualcuno riesce ad aiutarmi. perchè sono fermo e non riesco a muovermi Sto caricando una pagina dove ci sono 45 DIV che quando ci clicco sopra cambiano colore Codice:
for ($i=1;$i<46;$i++)
{
echo "<div id=\"".$i."\" onclick=\"action(this,'". $_SESSION["utente"]."','". $_SESSION["color"]."')\"><p>".$i."</p><p></p></div>";
}
Codice:
cella.style.backgroundColor = colore;
cella.childNodes[1].innerHTML=user;
vorrei fare che quando carico i 45 DIV si colorino in automatico in base ad una varibile che definisco io (es. $utenti [$x]['color'] = RED) cosi facendo i DIV già selezionati da altri utenti si colorano di RED. pensavo di utilizzare onLoad e ho modificato ilcodice come segue: Codice:
for ($i=1;$i<46;$i++){
echo "<div id=\"".$i."\"
onload=\"action2(this,'". $utenti[1]['nome']."','". $utenti[1]['colore']."')\",
onclick=\"action(this,'". $_SESSION["utente"]."','". $_SESSION["color"]."')\"><p>".$i."</p><p></p></div>";
}
function action2(cella,user,colore){
alert ("ciao");
cella.style.backgroundColor = colore;
cella.childNodes[1].innerHTML=user;
ma sembra che con i DIV l'evento ONLOAD non sia presente in quanto la funzione action2 non mi viene richiamata. Qualcuno ha qualche idea/consiglio? Grazie |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Nov 2010
Città: Londra
Messaggi: 620
|
1) mischiare javascript e php è il male.
2) usare onload e onclick direttamente nell'html è il male. 3) per le prime volte ti conviene usare una libreria come jQuery per interagire col DOM, altrimenti impazzisci con vanilla javascript (è più complicato per un beginner) http://jquery.com/ detto questo vediamo come risolvere il tuo problema in modo più semplice: puoi scrivere i vari div con la funzione php e assegnare una classe così da avere un selettore per tutti i div, ad esempio .pippo. eviterei gli id con i numeri progressivi, sono troppo generici non ha senso usarli. scrivi anche tutti gli attributi che vuoi utilizzare nel formato data-user="" data-number="", in questo modo hai accesso dopo tramite jQuery. esempio: Codice:
<div class="pippo" data-color="RED" data-user="Mario Rossi"><p>1</p></div> <div class="pippo" data-color="GREEN" data-user="Franco Verdi"><p>2</p></div> Codice:
<body>
... codice della tua pagina ...
<script>
$('.pippo').on('click',function(){
this.style.backgroundColor = $(this).data('color');
this.childNodes[1].innerHTML= $(this).data('user');
});
</script>
</body>
</html>
Se vuoi pre-colorare tutti i div il modo più semplice è scrivere direttamente lo style nel div secondo me. Non capisco veramente perchè devi farlo dopo in javascript quando hai già la variabile che ti arriva dal backend in php, se ho capito bene quello che vuoi ottenere. Codice:
<div class="pippo" style="background-color:red;"><p>1</p></div> Codice:
<div class="pippo colorato" data-color="RED" data-user="Mario Rossi"><p>1</p></div> <div class="pippo" data-color="GREEN" data-user="Franco Verdi"><p>1</p></div> Codice:
<script>
$('.colorato').css('background-color','red');
</script>
make sense? |
|
|
|
|
|
#3 | |
|
Junior Member
Iscritto dal: Mar 2009
Messaggi: 18
|
Quote:
Alla fine ho usato per questa soluzione era la più facile e la più banale. Grazie |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 13:44.



















