Avatar billede angelenglen Nybegynder
31. januar 2011 - 13:08 Der er 4 kommentarer og
1 løsning

Dynamisk oprettelse af svarmuligheder.

Jeg er i gang med at lave en side, hvor man skal kunne oprette nogle afstemninger.
I den forbindelse skal man kunne oprette alle de svarmuligheder man har lyst til.
Jeg har som sådan fået det til at virke, men hvis jeg fx opretter 3, skriver noget tekst i dem, og tilføjer en 4. - så sletter den teksten i de første tre, fordi jeg piller ved innerHTML for den div de ligger i.

Nogen der har forslag til hvordan jeg undgår det?

Her er mit script som det ser ud p.t.:




<table border="1" cellpadding="0">
<tr>
    <td>Spørgsmål (Enkeltsvar, radioknapper):</td>
</tr><tr>
    <td><textarea id="sporgsmal" name="sporgsmal" style="width: 100%;"></textarea></td>
</tr><tr><td colspan="2">&nbsp;<!-- spacer //--></td></tr><tr>
    <td>Rapport-email: (valgfri)</td>
</tr><tr>
    <td><input type="text" name="email" id="email" value=""></td>
</tr><tr><td colspan="2">&nbsp;<!-- spacer //--></td></tr><tr>
    <td>Svarmuligheder:</td>
</tr><tr>
    <td>
        <input type="text" name="svar" id="svar" value="">
        <div id="svar_div"></div>
    </td>
</tr><tr>
    <td><button type="button" onclick="add_answer('');">Tilføj en svarmulighed</button></td>
</tr><tr><td colspan="2">&nbsp;<!-- spacer //--></td></tr><tr>
    <td><button type="button">Gem spørgsmål</button></td>
</tr>
</table>

<script>
var q = 0; //counter, der holder styr på hvor mange spørgsmål der er.

function add_answer(txt) {
    var html = ""
    q++;
    html = html + "<div id='svar_div_"+q+"'><table border='1'><tr>";
    html = html + "<td width='300'><input type='text' name='svar_"+q+"' id='svar_"+q+"' value='"+txt+"'></td>";
    html = html + "<td><input type='text' name='slet_"+q+"' id='slet_"+q+"' value='nej'></td>";
    html = html + "<td><button type='button' onclick='del_answer("+q+");'>Slet</button></td>";
    html = html + "</tr></table></div>";
    document.getElementById('svar_div').innerHTML = document.getElementById('svar_div').innerHTML + html;
}

function del_answer(nr) {
    document.getElementById('slet_'+nr).value='ja';
    document.getElementById('svar_div_'+nr).style.display = 'none';
}

function init_answers() {
    var questions = document.getElementById('svar').value;
    var arrQuestions = new Array();
    var i;

    if (questions.indexOf('¤') >= 0) {
        //der er mere end ét spørgsmål i forvejen, opret array via split ved symbolet ¤:
        arrQuestions = questions.split('¤');
    } else {
        //der er kun ét (eller ingen) spørgsmål i forvejen.
        arrQuestions[0] = questions;
    }
   
    for(var i=0; i<arrQuestions.length; i++) {
        add_answer(arrQuestions[i]);
    }
   
}
init_answers(); //initialiser evt. eksisterende svarmuligheder ved load.
</script>
Avatar billede -mundi- Nybegynder
31. januar 2011 - 13:19 #1
Lad være med at bruge innerHTML, tilføj istedet via DOM. f.eks :
http://msdn.microsoft.com/en-us/library/ms536389(v=vs.85).aspx
Avatar billede -mundi- Nybegynder
31. januar 2011 - 13:21 #2
Hmm auto link funktionen her på Exp virker åbenbart ikke ordenligt, så her er det samme link via kortlink :
http://kortlink.dk/8pq5
Avatar billede angelenglen Nybegynder
31. januar 2011 - 13:27 #3
ok, den har jeg så ikke prøvet før...

Et eksempel på hvordan den integreres er meget velkommen, ellers må jeg jo i gang med at læse og eksperimentere... :-)
Avatar billede angelenglen Nybegynder
31. januar 2011 - 14:21 #4
Nevermind, jeg skal nok få det til at virke :-)

Bare smidt et svar, så får du points.

Tak for hjælpen.
Avatar billede angelenglen Nybegynder
01. marts 2011 - 09:17 #5
ah well...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester