background image sparisce e diventa visibile un testo in un div

gandalf1959

Utente Attivo
21 Nov 2013
208
1
18
Buongiorno a tutti,
sto cercando di ottenere quanto riportato in oggetto.
Sulla mia pagina ho una serie di div ai quali ho attribuito un'immagine come sfondo (si tratta di loghi).
qui l'html:
HTML:
<div id="kitchenaid" onMouseOver="cambiastile(this);" onMouseOut="ritorna(this);">
   <span class="testopartner" style="display: none"><strong>KitchenAid</strong> è parte totalmente integrante di tutti i progetti relativi al Teatro7 e inserita in tutta la comunicazione a 360°. C'è una chiara ed effettiva collaborazione tra Kitchen Aid e teatro7|Lab su tutto quello che riguarda la comunicazione e che sponsorizza la fornitura di piccoli elettrodomestici come impastatrici, blender, cutter come pure i grandi elettrodomestici come forni, cappe, abbattitore, ecc.</span>
  </div>

Questo e' lo script cambiastile:
Codice:
function cambiastile(id) {
    
    id.style.backgroundImage="none";
    id.getElementsByTagName("span").style.display = "block";
    }

Ora, l'immagine di sfondo mi si nasconde correttamente, mentre non riesco a identificare correttamente lo span e quindi la riga
Codice:
id.getElementsByTagName("span").style.display = "block";
mi provoca un errore "Uncaught TypeError: Cannot set property 'display' of undefined".
Come faccio a rendere visibile lo span all'interno del div? Perche' non mi identifica correttamente lo span?

Questo e' lo stile assegnato ai diversi elementi:
Codice:
kitchenaid {
  background-image: url(../immagini/partners/kitchenAid.gif);
  background-repeat: no-repeat;
  background-position: center center;
  background-color: white;
  float: left;
  margin-left: 2em;
  width: 40%;
  height: 120px;
  border: solid 1px #ccc;
  padding: 0.5em;
}
.testopartner {
  font-size: 0.8em;
  text-align: left;
}

Grazie per l'aiuto
 
Ciao, getElementsByTagName non restituisce un singolo elemento, ma un array di elementi. Se in ogni div è presente un unico span:

Codice:
id.getElementsByTagName("span")[0].style.display = "block";
 
Grazie.
Pensavo erroneamente che indicando id.getElement... mi restituisse il solo span contenuto in div, non avevo pensato al fatto che comunque era un array, sia pure con un solo elemento...
Perfetto, ora funziona. E meno male che era uno script semplice... :-)
 

Discussioni simili