Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: dodawanie i usuwanie z tablicy
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
Marr
Witam,
mam taki problem: przez php generuje sobie checkboxy i do kazdego przypisuje funkcje. Funkcja ma za zadanie dopisac wartosc checkboxa do tablicy przy zaznaczeniu, a przy odznaczeniu usunąć tą wartość z tablicy - problem wydaje się być banalny jednak coś mi nie idzie...

Kod
<script type="text/javascript">

var url= new Array;



function array_search(what,array){
    for(var i=0; i<array.length; i++){
        if (what == array[i]){
            return i;
            }
        else{
            return false;
            }
        }
}
    
function maras(id){
    var link = document.getElementById("generatedLink");

    var actValue = document.getElementById(id).value;
    var exists = array_search(actValue, url);
    
    if (exists)
    {
        delete url[exists];
    }
    else
    {
        url.push(actValue);
    }
    
    //alert("exists = " + exists + "\r\nactValue = " + actValue + "\r\nurl = " + url + "\r\nurl.length = " + url.length);
    link.setAttribute('href','/rss/generate/'+url+'.xml');
    
}


</script>


może mi ktoś powiedzieć, co robie źle? Jeżeli odznaczam pierwszy checkboxów które zaznaczałem, to mi się usuwa z tablicy url, a jeżeli już następny jakiś to niestety nie... będę wdzięczny za jakieś naprowadzenie.
erix
Zacznij od konsoli błędów.
#luq
Kod
for(var i=0; i<array.length; i++){

Dlaczego każesz co kolejną iteracje liczyć długość tablicy?

Dziś mam dobry dzień, a ostatnio coś takiego pisałem w JS:
Kod
/**
* Przeszukuje tablice w puszukiwaniu wartosci
*
* param mixed
* param array
* return integer or false
*/
function array_search( val, arr ){
    var cnt = arr.length;
    for( var i = 0; i < cnt; i++ ){
        if( arr[i] == val ){
            return i;
        }
    }
    
    return false;
}

/**
* Wyrzuca podany index z tablicy, pozostawiajac "plynnosc" tablicy
*
* <code>
* var arr = ['a', 'b', 'c', 'd', 'e', 'f'];
* var index = array_search( 'd', arr );
* remove_index( index, arr );
* // arr == ['a', 'b', 'c', 'e', 'f'];
* </code>
*
* param integer
* param array
* return array
*/
function remove_index( index, arr ){
    var replaceIndex = false;
    
    var cnt = arr.length;
    for( var i = 0; i < cnt; i++ ){
        if( i == index ){
            replaceIndex = true;
        }
        
        if( i == cnt - 1 ){
            arr.pop();
        }
        else if( replaceIndex ){
            arr[i] = arr[i+1];
        }
    }
    
    return arr;
}
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.