-
Problema con cambio id?
Salve, avevo creato questo script per cambiare id e far apparire un box al click:
Codice PHP:
<script type="text/javascript">
function c00l() {
var e = document.getElementById('search');
var before = document.getElementById('cerca');
if (e.style.display == "none") {
e.style.display = "block";
before.id = "cerca_tp";
} else {
e.style.display = "none";
before.id = "cerca";
}
}
</script>
Il problema è che l' id di partenza è cerca , poi al click diventa cerca_tp e appare al box, ma al click successivo il box scompare (diventando quindi display none) ma l' id di before non torna cerca :S (Potete testarlo qui > http://habbergforum.altervista.org/ sull' ultimo tasto con la lente d' ingrandimento)
-
Ovvio che non ti funziona.
La variabile befor fa riferimento al div con id cerca, visto che cambi id al div, befor fa riferimento ad un div con id cerca che non esiste più.
Oltre a cambiare id al div dovresti reinizializzare ( rivalorizzare ) la variabile befor in questo modo:
Codice HTML:
befor = document.getElementById("cerca_tp");
Ma questo credo sia ovvio dopo aver spiegato il motivo di perché la funzione non fa quello che vuoi te.
-
L'id si modifica, non è sempre lo stesso quindi anche la variabile before deve essere diversa, io non so se ho capito bene quello che tu volevi fare per questo ho fatto una demo
Il codice è questo
Codice PHP:
<script type="text/javascript">
function c00l() {
var ele = document.getElementById('search');
if (ele.style.display == "none") {
var before = document.getElementById('cerca');
ele.style.display = "block";
before.id = "cerca_tp";
} else {
var before = document.getElementById('cerca_tp');
before.id = "cerca";
ele.style.display = "none";
}
}
</script>
-
Una soluzione più semplice ed efficace è quella di spostare la dichiarazione delle variabili fuori dalla funzione, in questo modo non si sprecano risorse per effettuare la ricerca degli elementi ad ogni chiamata di funzione e si ovvia al problema dell'identificazione a seconda del nuovo id.
-