Avatar billede burgerjens Nybegynder
22. august 2011 - 20:50 Der er 23 kommentarer

Clear af et Array i javascrip

Hej Folkens..

Jeg har et problem med at clear mit array i Javascript, jeg ville jo tro man bare skriver gridArray.clear(); og så var det det, men jeg kan simpelthen ikke få det til at spille, når jeg så sørger på det, så virker det til jeg skal ud i et længere stykke kode, hvilket jeg jo mener slet ikke burde være nødvendigt.

Så vil lige høre jer her inde, om det virkelig kan være rigtigt og hvad jeg gør forkert.
Avatar billede majbom Novice
22. august 2011 - 21:03 #1
hvordan ser din kode ud?

du kan ikke bruge:

gridArray = array();
Avatar billede majbom Novice
22. august 2011 - 21:03 #2
der skulle lige have været et spørgsmålstegn efter sidste linje...
Avatar billede burgerjens Nybegynder
22. august 2011 - 21:07 #3
Jamen nu skal det sige jeg er pære ny i dette her, så ved ikke om der er nogle lettere måde at gøre det på. Men du kan se min kode her:


<script type="text/javascript">
   
    var gridArray = new Array();
    var spacing = 181;
   
    resizeScreen();
    window.addEventListener("resize", resizeScreen);
   
    function rectangle(w,h,x,y)
    {
        var rect = document.createElement("div");
           
            var style = rect.style;
        //    style.display = "none";
            style.width = w +"px";
            style.height = h +"px";
            style.left = x +"px";
            style.top = y +"px";
            style.opacity = 0.1;
            style.backgroundColor = "blue";
            style.position = "absolute";
       
        gridArray.push(rect);
        return rect
    }
   
   
    function resizeScreen()
    {
        var position = 0;
        var winH = window.innerHeight;
        var winW = window.innerWidth;   
        var value = winW / spacing;
       
       
        for (i=0;i<=value;i++)
        {               
            document.body.appendChild(rectangle(1, winH, position, 0) )       
            position += spacing;
           
        }
        alert(gridArray.length);
    }
   
</script>


Så er meningen så at jeg ville clear det, sådan så jeg ikke få lagt nye objecter oven på de gamle
Avatar billede majbom Novice
22. august 2011 - 21:20 #4
jeg kendte slet ikke clear-metoden før jeg læste denne tråd, men kan du ikke bare gøre som når du declarer det i starten:

gridArray = new Array();


?
Avatar billede burgerjens Nybegynder
22. august 2011 - 21:32 #5
Jamen jeg ved heller ikke om det er muligt at clear et array.. Men jeg skal på en eller anden måde lige som reset det hele så snart jeg resizer skærmen.

Ellers vil jeg rende ud i at den sætter de ny elementer over på de gamle, og det er jo ikke hensigten.
Avatar billede olebole Juniormester
23. august 2011 - 01:26 #6
<ole>

Array objektet har ingen clear metode. Du kan gøre, som splazz viser - eller du kan sætte dets length property til 0

/mvh
</bole>
Avatar billede burgerjens Nybegynder
23. august 2011 - 14:36 #7
Jeg synes bare, uanset hvad helvede jeg gør. Så vil de der strokes bare ligge sig oven på hinanden, jeg har ingen ide om hvordan jeg ligesom starter for nul hvergang jeg resizer.
Avatar billede olebole Juniormester
23. august 2011 - 18:12 #8
Læg et link til siden, så vi kan se, hvad du laver
Avatar billede burgerjens Nybegynder
23. august 2011 - 19:14 #9
Her kan i se det der sker. Men når i resizer browseren, så bliver linjerne mørkere, hvilket skyldes at der ligges nye over, dem som allerede er der.

http://kennethabrahamsson.dk/test/Grids.php
Avatar billede olebole Juniormester
23. august 2011 - 21:53 #10
Jeg forstår stadig ikke, hvad du vil
Avatar billede majbom Novice
23. august 2011 - 22:25 #11
siden vises ikke ordenligt i FF5 (tror jeg) - den starter op med en stribet baggrund og en alert med et tal og den står og venter på serveren indtil jeg lukker alerten.

der sker ingenting når jeg resizer, hverken før eller efter alerten lukkes...
Avatar billede burgerjens Nybegynder
23. august 2011 - 22:59 #12
Den skal vise de der striber hen af, jeg generer nogle striber hen med en alpha på 10%. og når jeg så resizer skærmen, så finder den ud af om den skal smide en stribe mere på. Men problemet er bare at den lækker helt nye striber på oven i de gamle. Dette kna du se ved at den blå farve bliver mere og mere blå, alt efter hvor mange gange du resizer browseren.

Det er derfor jeg godt kunne tænke mig at nulstille mit array hvergang jeg resizet, så den fjernede striberne og lavede det på ny hvergang.
Avatar billede olebole Juniormester
23. august 2011 - 23:16 #13
Hvorfor ikke bare et baggrundsbillede, der tiler? Jeg forstår stadig ikke, hvad du vil
Avatar billede burgerjens Nybegynder
24. august 2011 - 08:21 #14
Jamen laver jeg et baggrunds billede der tiler, så bliver afstanden evt større, så snart du gør browseren større. Jeg stå i den situation at den skal beregne hvor mangle streger den skal sætte på, da den skal have en præcis spacing på 181px, hvilket du også kan se på min kode længere oppe.

Gør jeg browseren mindre, så finder den ud af der kun skal være 4 linjer måske, men så skal den starte med at clear det hele, sådan så den sætter de 4 linjer på for ny.

Som det er nu, så sætter den måske 6 linjer på, resizer jeg til mindre, skal der kun 4 linjer på, men da arrayet ikke bliver clearet, så kommer der mere i det array, og den sætter de nye linjer oven på de gamle, dette kan du se ved at alphanen på linjerne bliver mere tydelig, et andet iss er at den som sagt ikke fjerner linjerne, så bliver browseren mindre, så vil de gamle linjer være der, og dermed kommer der en scrollBar på.
Avatar billede majbom Novice
24. august 2011 - 08:43 #15
lav et baggrundsbillede der er 1px højt og den ønskede afstand mellem linjerne bred.

det gentager du bare både på x og y akserne...
Avatar billede burgerjens Nybegynder
24. august 2011 - 08:47 #16
oohhh i see... jamen det vil jeg prøve :)
Avatar billede burgerjens Nybegynder
24. august 2011 - 14:16 #17
et lille side spørgsmål.. Er det så muligt at ligge noget nede under griddet hvis man gør det på den måde?
Avatar billede majbom Novice
24. august 2011 - 14:39 #18
nej ikke hvis du laver det som baggrund på body'en
Avatar billede burgerjens Nybegynder
24. august 2011 - 14:42 #19
Nej tænkte det nok. Så er den løsning også udelukket. Men man kan sige, det jeg har udviklet indtil nu virker næsten, den mangler bare at kunne starte forfra så snart jeg resizer. Men det er åbenbart ikke bare lige til.
Avatar billede majbom Novice
24. august 2011 - 14:59 #20
kan du ikke prøve at forklare hvad det er du vil opnå?

det kan være der findes en anden løsning...
Avatar billede burgerjens Nybegynder
24. august 2011 - 15:09 #21
Jeg skal have et fullscreen billede i baggrunden som kan skiftet mellem menupunkterne. Men oven på baggrundsbilledet er der sådan et grid lagt oven på. Griddet er nogle små sorte linjer med en alpha på, som skal gentage sig. Det er så det grid jeg er ved at lave nu.

Så hvis browser vinduet ikke er så bredt, regner den ud at der kun skal være 2 linjer f.eks, men laver du det fullscreen, så siger den måske 10. Men som det er lige nu, så putter den det bare ind i arrayet, så der så stå det indholder 12 linjer.. Denne skulle gerne clears hvergang man så resizer browseren.

koden bliver brugt her
var winW = window.innerWidth;   
        var value = winW / spacing;
       
       
        for (i=0;i<=value;i++)
        {               
            document.body.appendChild(rectangle(1, winH, position, 0) )       
            position += spacing;
           
        }


Men altså som sagt i det store hele, er det grid funktionen jeg skal have lavet, som skal generer sig selv alt efter hvor stor skærmen er.
Avatar billede majbom Novice
24. august 2011 - 15:42 #22
du kan jo godt lave en baggrund der repaetes på en div. så skal du bare selv sætte højden, men der har du jo allerede fat i innnerHeight...
Avatar billede burgerjens Nybegynder
24. august 2011 - 22:25 #23
Aahh det er måske bare lige til, det må jeg lige prøve så.
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

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