Newsgroup: it.comp.lang.javascript
Titolo: [X Federico Sasso] Re: Invisibilita': quesito!

 prova di JavaScript</a>
tabellina va scritto con o senza virgolette singole?
Grazie.
Ciao.

 collection document.all per motivi di compatibilita' retrograda
Questo vuol dire che con IE5+ il secondo terzo ramo non funziona o che con
IE5+ funzionano sia il secondo che il terzo es essendo scritto prima il
secondo il terzo non viene considerato?
Grazie.
Ciao.

 tabellina va scritto con o senza virgolette singole?
con. ricorda di mettere l'attributo id="tabellina nel codice HTML"
--
    Federico Sasso &8v>
 
http://www.crt.unige.it/jsSQL
    The jsSQL Project - JavaScript Database and SQL Engine

 secondo il terzo non viene considerato?
la seconda che hai detto:
con IE5 funzionano entrambi i rami, viene preso il secondo perche'
incontrato per primo.
ciao


 con. ricorda di mettere l'attributo id="tabellina nel codice HTML"
Ho provato con diversi tipi di scritture oltre quelli suggeriti non capendo
tuttavia perche' funzionino:
1.
<script>function show(aDiv){
aDiv.style.visibility='visible'
}
function hide(aDiv){
aDiv.style.visiblity='hidden'
}
</script>
<div id="prova">Prova</div>
<div onmouseover="show(prova)" onmouseout="hide(prova)">Visibilita'
Prova</div>
in show(prova) e hide(prova), prova e' scritto senza virgolette singole; se
scritto con le virgolette singole mi da errore.
2.
<script>
function show(aDiv){
document.all[aDiv].style.visibility='visible'
}
function hide(aDiv){
document.all[aDiv].style.visibility='hidden'
}
</script>
<div id="prova" style="visibility:hidden">Ciao</div>
<div onmouseover="show('prova')" onmouseout="hide('prova')">bottone</div>
che funziona perfettamente; ma all[aDiv] sarebbe una specie di array non
numerico?
3.
<script>
function show(aDiv){
document.getElementById(aDiv).style.visibility='visible'
}
function hide(aDiv){
document.getElementById(aDiv).style.visibility='hidden'
}
</script>
</head>
<body>
<div id="prova" style="visibility:hidden">Ciao</div>
<div onmouseover="show('prova')" onmouseout="hide('prova')">bottone</div>
tutto ok con questo
4.
<script>
function show(aDiv){
eval("document.all."+aDiv+".style.visibility='visible'")
}
function hide(aDiv){
eval("document.all."+aDiv+".style.visibility='hidden'")
}
</script>
<div id="prova" style="visibility:hidden">Ciao</div>
<div onmouseover="show('prova')" onmouseout="hide('prova')">bottone</div>
funziona anche questo
Quale dei quattro modi e' preferibile usare?
Immagino dipenda dalla circostanza... In questo caso quale va meglio?
Di getElementById() non ho trovato traccia nel reference di NetScape.
Forse non e' aggiornato. Ne esiste qualcun'altro o ho cercato male?
Grazie per la costante "esaurienza". ^_^
Ciao.

 Grazie per la costante "esaurienza". ^_^
di niente, ciao.


 di niente, ciao.
Di nuovo Grazie!
Ciao.

 Potresti guidarmi nella navigazione?
in realta' mi riferivo alle sezioni 'Lezioni' ed in particolare gli ottimi
'Tutorials'.
per ulteriori ragguagli dovresti pero' chiedere a Riccardo.
ciao


 che serve racchiudere parti di codice Javascript in uno Javascript?
[]
Sia in javascript sia in HTML gli apici singoli e doppi sono
interscambiabili, sono caratteri speciali che delimitano le stringhe; in
VBscript si possono usare solo gli apici doppi; l'apice singolo e' il
carattere di commento.
Alcuni esempi di utilizzo di apici annidati:
------------------
la funzione setTimeout richiede che il comando sia inserito fra apici;
volendo attivare una finestra modale con del testo, anche questo dovra'
essere inserito fra apici; se si utilizzasse lo stesso tipo, il comando
sarebbe troncato
setTimeout("alert("cosa succede")",1000) // il comando si tronca prima
di *cosa..* e quindi ritorna un errore mentre
setTimeout("alert('cosa succede')",1000) o setTimeout('alert("cosa
succede")',1000)
viene gestita correttamente
----------------------------
document.write('<a href="prova.html">Vai</a>')
in questo modo funziona, se si utilizzassero gli stessi apici la stringa
sarebbe interrotta prima di *prova.* generando errore
--------------------
Esiste un altro metodo per utilizzare gli stessi apici, anteponendo a
quelli interni \
document.write('<a href=\'prova.html\'>Vai</a>')
in questo modo l'apice interno non viene visto come carattere speciale
(chiusura stringa) ma come un semplice carattere da scrivere.
Spero di essere stato d'aiuto.
Saluti, Paolo

 stringa, variabile che hai dichiarato.
Perche' in questo script il passaggio dell'argomento alla funzione non
funge?
<html>
<head>
<script>
function show(aDiv){
    document.getElementById(aDiv).style.visibility='visible'
}
function hide(aDiv){
    document.getElementById(aDiv).style.visibility='hidden'
}
function motion(aDiv){
    s=0;
    for(i=0; i <= 10; i++){
        setTimeout("document.getElementById(aDiv).style.left=s; s=s+50",
i*500)
    }
}
</script>
</head>
<body>
<div id="prova3" style="position: absolute; top: 100px; left: 0px;
visibility: 'hidden'">Testo</div>
<div onmouseover="show('prova3'); motion('prova3')"
onclick="hide('prova3')">Bottone</div>
</body>
</html>
Grazie.
Ciao.

         setTimeout("document.getElementById(aDiv).style.left=s;
s=s+50", i*500)
qui non funziona perche' l'argomento di una funzione e' una variabile
locale e quindi muore con la funzione; il metodo setTimeout non sospende
la funzione che termina regolarmente; quando Timeout chiama la
dichiarazione la variabile aDiv non esiste piu'.
Valorizza una variabile globale con il valore di aDiv e tutto torna a
funzionare.
function motion(aDiv){
    oDiv=aDiv // oDiv e' globale anche se interna a una funzione perche'
manca la dichiarazione *var*
     s=0;
     for(i=0; i <= 10; i++){
         setTimeout("document.getElementById(oDiv).style.left=s;
s=s+50", i*500)
[]
Saluti, Paolo

 []
Potresti spiegarmi a che e' dovuta l'accelerazione se fai onmouseover
onmouseout molte volte prima della fine dell'avanzamento?
E come si puo' evitare?
Grazie.
Ciao.

 E come si puo' evitare?
Quando chiami la funzione motion attivi 10 setTimeout; se esci dal layer
e rientri velocemente ne attivi altri 10; gli ultimi della prima serie
si intersecano con i primi della seconda serie; poi l'avanzamento torna
alla velocita' normale.
Per evitare questo e' necessario eliminare tutti i Timeout ancora
attivi.
Prova cosě:
------------
<script>
function show(aDiv){
    document.getElementById(aDiv).style.visibility='visible'
}
function hide(aDiv){
    document.getElementById(aDiv).style.visibility='hidden'
}
aa= new Array();
function motion(aDiv){
 for (i=0;i<aa.length;i++) clearTimeout(aa[i]);
 pDiv=aDiv
    s=0;
    for(i=0; i <= 10; i++){
    aa[i]=setTimeout("document.getElementById(pDiv).style.left=s;
s=s+50",i*500)
    }
}
</script>
</head>
<body>
<div id="prova3" style="position: absolute; top: 100px; left: 0px;
visibility: 'hidden'">Testo</div>
<div onmouseover="show('prova3'); motion('prova3')"
onclick="hide('prova3')" >Bottone</div>
------------
Saluti, Paolo