Newsgroup: it.comp.lang.javascript
Titolo: Cambiare sfondo di un div

Credo sia una sola riga quella problematica (quella con 
document.getelementbyid(), ma non riesco a farla funzionare: in pratica 
vorrei cambiare lo sfondo di un div, mettendo una piccola immagine presa 
a caso da una lista di immagini (in questo caso di 12).
L'esempio sotto, e' solo una delle decine di prove che ho fatto 
googlando, ma come gli altrinon funziona. L'esempio che c'e' su 
w3schools invece funziona, ma non contiene ovviamente il percorso 
dell'immagine ne le virgole, ed io il percorso vorrei formarlo al volo 
visto che le pagine possono essere a livelli diversi di profondita'. 
Soluzioni o posti dove farsi un'idea (sempre se mi sono spiegato)? Grazie!
 
Cose certe:
* Sotto /site/ ci sono banner1.jpg, banner2.jpg etc etc fino al 12.
* Le proprieta' impostate nel primo div sono ok (quindi anche i 
percorsi), visto che si vede.
* Nessun errore segnalato da Firefox, o dal w3 validator.
* Lo script dopo un pezzo di pagina e' brutto, ma non posso metterlo in 
una classe del css o nell'header della pagina, visto che viene generato 
dinamicamente per ogni pagina.
 
 
=======================================
<body>
<div class='divheader' id='divtitle' 
style="background-image:url('../site/banner1.jpg'); background-repeat: 
no-repeat">
	<h1>titolo</h1>
</div>
 
<script>
var conto = 12
var imgnum = Math.floor(Math.random()* conto + 0.5)
document.getElementById('divtitle').style.background = 
"url('../site/banner' + imgnum + '.jpg') no-repeat bottom right fixed"
</script>
 
Il resto della pagina

 ('../site/banner' + imgnum + '.jpg')
 
Qui dovtrebbe stare il problema:
('../site/banner1.jpg')
('../site/banner' + imgnum + '.jpg')
banner è una cartella i imgnum il numero dell'immagine?
in questo caso dovrebbe essere scritto così:
('../site/banner/' + imgnum + '.jpg')
Leonardo
 
-- 
Non sono su facebook
Se anche tu vuoi cancellarti
http://www.giardiniblog.com/come-cancellarsi-da-facebook-eliminare-account/
 

 banner è una cartella i imgnum il numero dell'immagine?
 
Eh no, e' proprio "banner1.jpg", "banner2.jpg", il percorso e' corretto, 
suppongo, perche' quando "scrivo" il div con il file banner1 come 
sfondo, questo viene visualizzato correttamente. Appurato che i path 
dovrebbero essere ok, vedo funzionare, da w3schools, questa riga:
 
document.body.style.background="url('img_tree.png') no-repeat right 
bottom fixed";
 
Che non e' molto diversa, per quello che ci capisco -  ma se capissi 
tutto funzionerebbe, da cio' che viene fuori da
 
 
 
<body>
<div class='divheader' id='divtitle' 
style="background-image:url('../../site/images/banner1.jpg'); 
background-repeat: no-repeat">
	<h1 class='mysitetitle'>
antani.se
</h1>
</div>
<script>
var conto = 12
var imgnum = Math.round(Math.random()* conto + 0.5)
var imglink = "../../site/images/banner" + imgnum + ".jpg"
 
document.getElementById('divtitle').style.background = "url('" + imglink 
+ "') no-repeat bottom right fixed;"
</script>
 
 
 
(con la console web di Firefox la variabile imglink da' risultati come
"../../site/images/banner3.jpg", per quello mi da' l'idea che il 
problema sia di come "accatasto" le virgolette)

 "url('../site/banner' + imgnum + '.jpg') no-repeat bottom right fixed"
 
Con un minimo di debug, bastava un `console.log` della proprietà, o
l'inspector, avresti visto che ciò che vai a scrivere nell'HTML è la
seguente immagine:
 
    url('../site/banner' + imgnum + '.jpg') no-repeat bottom right fixed
 
Ovvero, proprio con `imgnum` dentro, letterale, e i segni di piú. Questo
perché la stringa l'hai iniziata, in JS con il double quote, quindi per
"comporla" avresti dovuto interromperla sempre con i double quote: in
questo modo invece stai scrivendo una stringa unica.
 
Nel codice che ti ho suggerito ho ulteriormente semplificato, giacché
gli apici non sono obbligatori nel caso di immagini, in quanto `url()`
delimita di già.
 

 random dell'immagine, che tutte devono avere.
 
Il discorso torna, anche se adesso sembra non li prenda, lasciandoli 
solo nel css. E' comunque un problema sicuramente secondario, per adesso 
ringrazio e indaghero' nei prossimi giorni :-)