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
codice:
<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 è l'HTML
codice:
<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>
Questo il CSS
codice:
<style>
.domanda_nascosta{
display:none;
}
</style>
La funzione setVisibility agisce sul div con id sub1.
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.
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
%>
Praticamente creo una funzione setVisibility per ogni dato del recordset.
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.