Ciao a tutti,
ho un problema che non so come risolvere.
Ho una pagina con domande e risposte e con un javascript faccio in modo che il div contenente la risposta si apra al click.
Questo è il javascript
Questo è l'HTMLcodice:<script type="text/javascript"> function setVisibility(id) { if(document.getElementById('bt1').value=='-'){ document.getElementById('bt1').value = '+'; document.getElementById('bt1').className = 'btn btn-info mostra-nascondi'; document.getElementById(id).style.display = 'none'; }else{ document.getElementById('bt1').value = '-'; document.getElementById('bt1').className = 'btn btn-info mostra-nascondi'; document.getElementById(id).style.display = 'inline'; } } </script>
Questo il CSScodice:<li class="domanda"> <strong>Domanda?</strong> <input type=button name=type id='bt1' value='+' onclick="setVisibility('sub1');" class="btn btn-info mostra-nascondi"> <br> <div id="sub1" class="domanda_nascosta">Risposta.</div> </li>
La funzione setVisibility agisce sul div con id sub1.codice:<style> .domanda_nascosta{ display:none; } </style>
Le domande sono tante e vengono lette, tramite ASP, da un database.
Avendo n domande e quindi n div, devo trovare il modo di far agire la funzione sui diversi div.
Per il momento ho adottato questa soluzione.
Praticamente creo una funzione setVisibility per ogni dato del recordset.codice:<ul class="list-unstyled domande"> <% SqlString = "SELECT * FROM faq WHERE attiva='1' ORDER BY pos ASC" SET RS = Conn.Execute(SqlString) WHILE NOT RS.EOF %> <script type="text/javascript"> function setVisibility<%=RS("id")%>(id) { if(document.getElementById('bt<%=RS("id")%>').value=='-'){ document.getElementById('bt<%=RS("id")%>').value = '+'; document.getElementById('bt<%=RS("id")%>').className = 'btn btn-info mostra-nascondi'; document.getElementById(id).style.display = 'none'; }else{ document.getElementById('bt<%=RS("id")%>').value = '-'; document.getElementById('bt<%=RS("id")%>').className = 'btn btn-info mostra-nascondi'; document.getElementById(id).style.display = 'inline'; } } </script> <li class="domanda"> <strong><%=RS("faq")%></strong> <input type=button name=type id='bt<%=RS("id")%>' value='+' onclick="setVisibility<%=RS("id")%>('sub<%=RS("id")%>');" class="btn btn-info mostra-nascondi"> <br> <div id="sub<%=RS("id")%>" class="domanda_nascosta"><%=Replace(RS("risposta"),chr(13)&chr(10),"<br />")%></div> </li> <% RS.MoveNext WEND %> </ul> <% RS.Close Set RS = Nothing %>
Mi chiedevo se ci fosse una soluzione migliore, visto che così, alla fine, se ho 10 domande, mi trovo nella pagina ripetuta per 10 volte la funzione setVisibility, con nomi setVisibility1, setVisibility2, ecc, con il numero corrispondente all'id del record scritto nel database.

Rispondi quotando
