Newsgroup: it.comp.lang.javascript
Titolo: mostra/nascondi DIV e radiobutton

Hi Boyzzz,
Questa volta ho messo tutto il codice per facilitarvi la lettura.
Praticamente cliccando su uno dei radio si nasconde o si visualizza un DIV.
Nel caso in cui o il radio Base Limitato o Canale limitato sono selezionai e
con questi tutti i checkbox, dovrà accadere:
1) Passare al radio corrispondente maggiore (e non riesco ad
implementarlo)...ossia Base senza limiti e Canale senza limiti.
2) Far nascondere il DIV e funziona....
3) Ovviamente deselezionare tutti i checkbox che anche se nascosti, però uno
mi rimane cliccato??
Per vedere il punto 3 in azione sostituite questa funzione e fate la prova
su Base Limitato. Alla sua scomparsa ricliccateci sopra e vedrete la voce
karate selezionata?
spero in voi per concludere la pagina...
P.S.: ma i ";" nella dichiarazione delle variabile servono o è solo una
mania di PURISTI
Ciao e grazie Alen
--------------------------------
function Vedi(Bottone){
var Tabella= "Tabella1"
if (document.getElementById(Tabella).style.display=="none"){
document.getElementById(Tabella).style.display="block";
} else if (document.getElementById(Tabella).style.display=="block"){
document.getElementById(Tabella).style.display="none"
}
}
--------------------------------
Questa è la pagina!
----------------------------------------------
<html>
<head>
<title>Example</title>
<script language="javascript">
<!--
//funzioni per visualizzare i canali da attivare sul click on "radio"
function Vedi(Bottone){
var Tabella= "Tabella1"
if (document.getElementById(Tabella).style.display=="none"){
document.getElementById(Tabella).style.display="block";
}
}
function Nascondi(Bottone){
var Tabella= "Tabella1"
if (document.getElementById(Tabella).style.display=="block"){
document.getElementById(Tabella).style.display="none";
}
}
//Funzione per UNCHECK sul click su di un specifico radiobutton Admin,
Canale Totale, Base Senza Limiti
function uncheckAll(field)
{
for (i = 0; i < field.length; i++)
 field[i].checked = false
}
//Fino a qui tutt'OK, il casino per me è qui sotto...
function testit()
{
var idform = Lara;
var bChecked = true;
var ObjRadio = document.Lara.AdminLevel;
var objSelect = null;
var Tabella = "Tabella1"
var field = document.Lara.StrIDcategoria
//var objRadioBaseTot = document.Lara.elements.[2].value["BaseTotal"];
//var objRadioCanaleTot =
document.Lara.elements.AdminLevel.value["CanaleTotal"];
for (var i = 0; i < idform.elements.length; i++) {
if (idform.elements[i].type == "checkbox" && !idform.elements[i].checked)
bChecked = false
}
if (bChecked) {
for (var y = 0; y < ObjRadio.length; y++)
 if(ObjRadio[y].checked){
 objSelect = ObjRadio[y].value
 break}
 }
 if ((objSelect == "BaseLimit")||(objSelect == "CanaleLimit")){
 //objRadioBaseTot.checked = true
 document.getElementById(Tabella).style.display="none";
 for (z = 0; z < field.length; z++)
 field[z].checked = false;
 }
}
//-->
</script>
</head>
<body>
<form name="Lara">
<input type="radio" name="AdminLevel" value="BaseLimit" id="Bottone1"
onClick="Vedi(
this.id
,1);">
                                        Base limitato ad uno o pi&ugrave;
canali.<br>
<input type="radio" name="AdminLevel" value="BaseTotal" checked
id="Bottone1"
onClick="Nascondi(
this.id
,1);uncheckAll(document.Lara.StrIDcategoria)">
                                        Base senza limiti di canale.<br>
<input type="radio" name="AdminLevel" value="CanaleLimit" id="Bottone1"
onClick="Vedi(
this.id
,1);">
                                        Amministratore limitato ad uno o
pi&ugrave;
                                        canali.<br>
<input type="radio" name="AdminLevel" value="CanaleTotal" id="Bottone1"
onClick="Nascondi(
this.id
,1);uncheckAll(document.Lara.StrIDcategoria)">
                                        Amministratore senza limiti di
canale.<br>
<input type="radio" name="AdminLevel" value="Admin" id="Bottone1"
onClick="Nascondi(
this.id
,1);uncheckAll(document.Lara.StrIDcategoria)">
                                        Power admin.
<div id="Tabella1" style="display: none;">
<br>
<br>
<input name="strIDcategoria" type="checkbox" id="StrIDcategoria"
onclick="testit()">
Finess
<input name="strIDcategoria" type="checkbox" id="StrIDcategoria"
onclick="testit()">
Body Scolpture
<input name="strIDcategoria" type="checkbox" id="StrIDcategoria"
onclick="testit()">
Aerobica
<input name="strIDcategoria" type="checkbox" id="StrIDcategoria"
onclick="testit()">
HipHop
<input name="strIDcategoria" type="checkbox" id="strIDcategoria"
onclick="testit()" >
Karate
</div>
</form>
</body>
</html>
===================================================
Vivi come se dovessi morire domani, pensa come se non dovessi morire mai.
===================================================

 Ciao e grazie Alen
Prego.
p.s. x NG
Come al solito scrivo off-line, se qualcuno ha gia' risposto prima che 
io mandi questo mex non me ne voglia :-))
pp.ss. per Alen
-- 
Ciao, Riccardo
------------------------------------------------------------------------
http://www.jsdir.com
 ---- Bring Your Site To Life!!!!
------------------------------------------------------------------------
http://www.dev2dev.it
 - La rete ha connesso nuove particelle - D2D006
------------------------------------------------------------------------
 ----> itALY = it <----

 Le altre funzioni non le ho toccate, se vuoi un codice piu' elegante usa
chiamalo elegante...è in SMOKING!!!!
fantastico....perfetto ora spulcierò il mio libero di Javascript (98.000
vecchie lire!!!) per comprendere meglio i tuoi esempi.
GRAZIE BOSS!

 GRAZIE BOSS!
Se... aspetta che ti arriva la parcella! :-)
Senti almeno un link nei credits del sito o nel sorgente del sito me lo 
piazzi spero?
Lavorando su questo ho trovato nella cartella c:\taroccaggi\iclj\ anche 
una \alen_cappelletti con altre benedizioni passate ^_^


 una \alen_cappelletti con altre benedizioni passate ^_^
Puoi stare tranquillo che metterò un link a te...oramai è un anno che ci
lavoro (Lineafit.net) ed ho quasi terminato l'intranet di
pubblicazione...che era anche la cosa + complicata...(1 anno perchè lo
faccio di sera, nei ritagli tra una cosa e l'altra).
Cambiando discorso, anzi codice  : ),
ho subito cercato si utilizzare la tecnica che mi hai fatto vedere ossia
degli "operatori condizionali".
Tanto per cambiare non mi viene...penso che ci sia qualche errorino.
Al click sul radio mi dovrebbe mostrare le tabelle nascoste, mentre al suo
"dececcamento" me dovrebbe far sparire.
Il numero di tabelle però è dinamico...quindi non è un numero fisso...penso
di esserci vicino ma...  : (((
Io qui ne ho messe 4 per capire...., ma comunque il numero lo scriverei con
una variabile ASP...
------------------------ and the nominations are--------------------------
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<TITLE></TITLE>
<SCRIPT LANGUAGE=javascript>
<!--
function showText()
{
var Ck = document.Forma.ShowAll;
var B = document.getElementById.Tabella;
var bSTL = style.display="block";
var nSTL = style.display="none";
var Switch = null
  for (var i=1;i=4;i++)
  Ck.checked?B[i].bSTL:B[i].nSTL;
}
//-->
</SCRIPT>
</HEAD>
<BODY>
<FORM action="" method="POST" id="Forma" name="Forma">
MAGIC...
<INPUT type="checkbox" id="ShowAll" name="ShowAll" onClick="showText()"><br>
</FORM>
<br>
<table id="Tabella1" style="display:none" width="100%" height="96"
border="0" cellpadding="0" cellspacing="0" bgcolor="#99FF66">
 <tr>
 <td>BUUUU!!</td>
 </tr>
</table><br>
<table id="Tabella2" style="display:none" width="100%" height="96"
border="0" cellpadding="0" cellspacing="0" bgcolor="#99FF66">
 <tr>
 <td>Baaaaa!!</td>
 </tr>
</table><br>
<table id="Tabella3" style="display:none" width="100%" height="96"
border="0" cellpadding="0" cellspacing="0" bgcolor="#99FF66">
 <tr>
 <td>Baaaaa!!</td>
 </tr>
</table><br>
<table id="Tabella4" style="display:none" width="100%" height="96"
border="0" cellpadding="0" cellspacing="0" bgcolor="#99FF66">
 <tr>
 <td>Baaaaa!!</td>
 </tr>
</table>
</BODY>
</HTML>
--------------------------------------------------------
Ciao e Grazie Ricky e dammi qualche altra cicchina di sapienza...
BYE
Alen

 Cambiando discorso, anzi codice  : ),
Domani... con calma :-))
Comunque prova:
var B = document.getElementById;
...
Ck.checked?B["Tabella"+i].bSTL:B["Tabella"+i].nSTL;


 Ck.checked?B["Tabella"+i].bSTL:B["Tabella"+i].nSTL;
Niente mi da ancora errore mi dice che style non è definito, ma perchè????
<SCRIPT LANGUAGE=javascript>
<!--
function showText()
{
var Ck = document.Forma.ShowAll;
var B = document.getElementById;
var bSTL = style.display="block";
var nSTL = style.display="none";
  for (var i=1;i=4;i++)
  Ck.checked?B["Tabella"+i].bSTL:B["Tabella"+i].nSTL;
}
//-->
</SCRIPT>
L'HTML è il solito dello scorso post.
BYE
Alen

 </SCRIPT>
Prova con un eval()


 > Ck.checked?B["Tabella"+i].bSTL:B["Tabella"+i].nSTL;
Non e' che ci vogliono le parentesi tonde?
Ck.checked?B("Tabella"+i).bSTL:B("Tabella"+i).nSTL;
--
Ciao
  [web]   
www.gfcarlotti.it
   [mail]   
fra...@gfcarlotti.it
    [pgp]  
www.gfcarlotti.it/pgp/franco.asc

 Ck.checked?B("Tabella"+i).bSTL:B("Tabella"+i).nSTL;
No! Mi da sempre lo stesso errore, qualche altra idea??
Cos'è quel eval, che dice Riccardo non conosco quella funzione?

 Prova con un eval()
A parte che non so bene usare questa funzione...comunque ho provato ma
mi continua a dare errore alla riga 11 ossia:
var bSTL = style.display="block";
quindi non arriva neanche sotto??
L'errore deve essere qui...ma mi sembra tutto ok nella dichiarazione
della variabili..
;(

 Prova con un eval()
Sorry, ma ieri ti ho risposto proprio a XXX di cane senza neanche 
leggere il codice. :-)
- "B" non ha senso, getElementById non e' come all o layers cui attacchi 
l'oggetto con un punto per individuarlo, devi passargli l'ID come 
parametro (stringa);
- bSTL e nSTL non hanno senso neanche loro, style non e' un oggetto, un 
approccio come il tuo richiederebbe style.display=... direttamente 
espresso come stringa da dare in pasto ad un eval() (da qui il mio 
suggerimento), ma come giustamente dice IE: "style non e' definito"
- il ciclo for() contiene due errori, la condizione di fine ciclo (i=4) 
e' sbagliata perche' non e' un confronto (e manda in loop il browser), e 
comunque hai 4 tabelle con id iniziale 1, quidi dev'essere i<5
L'uso di ?: invece era concettualmente corretto, la tua funzione 
funzionante che che ha funzionato su IE5 ( :-))) e' questa:
function showText()
   {
   var Ck = document.Forma.ShowAll;
   var bSTL = "block";
   var nSTL = "none";
   for (var i=1;i<5;i++)
      document.getElementById("Tabella"+i).style.display=Ck.checked?
bSTL:nSTL;
   }
E' chiaro che a questo punto bSTL e nSTL te le  puoi anche risparmiare, 
quanto a bSTL io userei "visible" invece di "block", tanto una tabella 
e' comunque un elemento boxed


 No! Mi da sempre lo stesso errore, qualche altra idea??
<SCRIPT LANGUAGE=javascript>
function
showText(i){while(++i<=4)document.forms["Forma"].elements["ShowAll"].checked
?document.getElementById("Tabella"+i).style.display="block":document.getElem
entById("Tabella"+i).style.display="none";}
</SCRIPT>
</HEAD>
<BODY>
<FORM action="" method="POST" id="Forma" name="Forma">
MAGIC...
<INPUT type="checkbox" id="ShowAll" name="ShowAll"
onClick="showText(0)"><br>
</FORM>
Non so se e' come volevi tu, ma funziona.


 Non so se e' come volevi tu, ma funziona.
Ti ringrazio di cuore...sia Te che Riccardo avete fatto centro...
2 soluzioni ad un unico problema...
Io ero ancora lontano...
Grazie Ricky per la delucidazione dei concetti ora mi è tutto + chiaro...
quindi se ho 5 elementi il ciclo sarà sempre una unità di +...
GRAZIE MILLE....