Avatar billede basse55 Nybegynder
28. august 2004 - 15:19 Der er 5 kommentarer og
1 løsning

reset af select liste

Hej jeg har et problem med at nulstille en select liste.
Når jeg har foretaget et valg i listen kaldes funktionen og der skal udføres et eller andet afhængig af valg (virker), men før funktionen afsluttes vil jeg gerne have at select listen resettes, altså sættes til "Select".
Dette virker når der vælges "Enabled"/"Disabled"/"Auto Disabled" men ikke når der vælges "All"/"Invert"!

På forhånd tak,
Sebastian


Udsnit af kode:

<SCRIPT LANGUAGE="JavaScript">
<!-- BEGIN
//***** Mass Select *****//
function select(action)
{
    if (action == "all")
    {
        for (var i=0; i <= document.form1.check_id.length; i++)
        {
            document.form1.check_id[i].checked = true;
        }
    }
    else if (action == "enabled")
    {
   
    }
    else if (action == "disabled")
    {
   
    }
    else if (action == "auto_disabled")
    {
   
    }
    else if (action == "invert")
    {
        for (var i=0; i <= document.form1.check_id.length; i++)
        {
            if (document.form1.check_id[i].checked == true)
            {
                document.form1.check_id[i].checked = false;
            }
            else
            {
                document.form1.check_id[i].checked = true;   
            }
        }   
    }
   
    document.form1.select_list.selectedIndex = "default";  // Dette burde resette select listen (tror jeg nok) men det virker ikke
}
// END -->
</SCRIPT>


<form name="form1">
    <select name="select_list" onClick="select(select_list.options[select_list.selectedIndex].value)">
        <option value="default">Select</option>
        <option value="all">All</option>
        <option value="enabled">Enabled</option>
        <option value="disabled">Disabled</option>
        <option value="auto_disabled">Auto Disabled</option>
        <option value="invert">Invert</option>
    </select>
</form>
Avatar billede roenving Novice
28. august 2004 - 15:37 #1
Prøv med:

<SCRIPT LANGUAGE="JavaScript">
<!-- BEGIN
//***** Mass Select *****//
function select(sel){
  action = sel.value;
  f = sel.form;
    if (action == "all"){
        for (var i=0; i <= document.form1.check_id.length; i++){
            f.check_id[i].checked = true;
        }
    }else if (action == "enabled"){
   
    }else if (action == "disabled"){
   
    }else if (action == "auto_disabled"){
   
    }else if (action == "invert"){
        for (var i=0; i <= f.check_id.length; i++){
            if (f.check_id[i].checked == true){
                f.check_id[i].checked = false;
            }else{
                f.check_id[i].checked = true;   
            }
        }
    }
   
    sel.selectedIndex = 0;
}
// END -->
</SCRIPT>


<form name="form1">
    <select name="select_list" onchange="select(this)">
        <option value="default">Select</option>
        <option value="all">All</option>
        <option value="enabled">Enabled</option>
        <option value="disabled">Disabled</option>
        <option value="auto_disabled">Auto Disabled</option>
        <option value="invert">Invert</option>
    </select>
</form>
Avatar billede basse55 Nybegynder
28. august 2004 - 16:16 #2
Det ændre ikke noget, får desværre stadig samme fejl.

Det lader til at der sker et eller andet når der en i if sætningerne ændres på 'check_id', fx via: f.check_id[i].checked = true;

Jeg prøvede lige at indsætte ovenstående linie i 'if (action == "enabled")' og så opstår fejlen også ved Enabled! Altså så virker det når der vælges "Disabled"/"Auto Disabled" men ikke når der vælges "Enabled"/"All"/"Invert"!

Jeg kan evt. smide hele koden i tråden hvis du tror det vil hjælpe.
Avatar billede roenving Novice
28. august 2004 - 16:23 #3
Du er stødt ind i en af javascripts finurligheder, nemlig at alle arrays er 0-baserede, hvorfor længden af et array vil være en større end det største index !-)

<SCRIPT LANGUAGE="JavaScript">
<!-- BEGIN
//***** Mass Select *****//
function select(sel){
  action = sel.value;
  f = sel.form;
    if (action == "all"){
        for (var i=0; i < f.check_id.length; i++){
            f.check_id[i].checked = true;
        }
    }else if (action == "enabled"){
   
    }else if (action == "disabled"){
   
    }else if (action == "auto_disabled"){
   
    }else if (action == "invert"){
        for (var i=0; i < f.check_id.length; i++){
                f.check_id[i].checked = !f.check_id[i].checked;
            }
        }
    }
   
    sel.selectedIndex = 0;
}
// END -->
</SCRIPT>


<form name="form1">
    <select name="select_list" onchange="select(this)">
        <option value="default">Select</option>
        <option value="all">All</option>
        <option value="enabled">Enabled</option>
        <option value="disabled">Disabled</option>
        <option value="auto_disabled">Auto Disabled</option>
        <option value="invert">Invert</option>
    </select>
    <br><input type="checkbox" name="check_id">
    <br><input type="checkbox" name="check_id">
    <br><input type="checkbox" name="check_id">
    <br><input type="checkbox" name="check_id">
    <br><input type="checkbox" name="check_id">
    <br><input type="checkbox" name="check_id">
    <br><input type="checkbox" name="check_id">
    <br><input type="checkbox" name="check_id">
    <br><input type="checkbox" name="check_id">
</form>
Avatar billede basse55 Nybegynder
28. august 2004 - 17:10 #4
Ha så lykkedes det, tak for hjælpen.

Kan dog ikke få dit eksempel til at virke men ændrede <= til < i mit eget script og så funker det bare :)
Avatar billede roenving Novice
28. august 2004 - 17:12 #5
Velbekomme '-)
Avatar billede roenving Novice
29. august 2004 - 04:39 #6
-- og tak for point ;~}
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