Avatar billede sjh Nybegynder
10. november 2008 - 22:24 Der er 26 kommentarer og
2 løsninger

fjrene Index fra Array

Jeg har nogle problemer med at fjrene Index fra Array

I det skulle være slice(Index, Lengt) som kunne gøre det, men jeg kan ikke få den til at virke.. Se under "remove: function(e)"


var Custom = {
    init: function(text)
  {
    if (!Custom.List)
    {
      Custom.List = [];
    }
   
    this.text = text;
   
    Custom.List[Custom.List.length] = this;
   
    this.div = document.createElement('div');
    this.div.className = text;
    this.div.onclick = Custom.remove;
    this.div.appendChild(document.createTextNode(text));
    document.body.appendChild(this.div);
   
  },
  remove: function(e)
  {
    for(var i = 0; i < Custom.List.length; i++)
    {
      if (Custom.List[i].div = this)
      {
        document.body.removeChild(Custom.List[i].div);
        Custom.List.slice(i, 1); /* HER GÅR DET SIKKERT GALT */
        break;
      }
    }
    var tmp = '';
    for(var i = 0; i < Custom.List.length; i++)
    {
      tmp += Custom.List[i].text + ', ';
    }
    alert(tmp);
  }
};

window.onload = function()
{
  new Custom.init('div a');
  new Custom.init('div b');
  new Custom.init('div c');
  new Custom.init('div d');
}
Avatar billede w13 Novice
10. november 2008 - 22:28 #1
Hvad er resultatet?
Avatar billede erikjacobsen Ekspert
10. november 2008 - 22:33 #2
slice er en funktion. Du skal snuppe resulatet:
  noget=Custom.List.slice(i, 1);
Avatar billede erikjacobsen Ekspert
10. november 2008 - 22:34 #3
Den her tror jeg heller ikke du mener:
  if (Custom.List[i].div = this)
for det kunne være du mente
  if (Custom.List[i].div == this)
Avatar billede sjh Nybegynder
10. november 2008 - 22:35 #4
w13 ?? resultatet ??
resultatet er at der ikke sker noget når jeg bruger : Custom.List.slice(i, 1);
Avatar billede w13 Novice
10. november 2008 - 22:36 #5
Ok, det var bare det, jeg fiskede efter, da det ikke fremgik af spørgsmålet. Men jeg mener, at Erik har helt ret.
Avatar billede sjh Nybegynder
10. november 2008 - 22:38 #6
erikjacobsen: :D Ja det er ==, men det gør desværre ikke nogle forskel på Array
Avatar billede sjh Nybegynder
10. november 2008 - 22:40 #7
er det sådan :

Custom.List=Custom.List.slice(i, 1);

eller hvordan.. for det virker heller ikke..
Avatar billede w13 Novice
10. november 2008 - 22:41 #8
Nu siger du, at der ikke sker noget, når du bruger den funktion.

Betyder det så, at Custom.List ikke bliver "beskåret", eller betyder det, at Custom.List herefter er tom?
Avatar billede erikjacobsen Ekspert
10. november 2008 - 22:42 #9
Hvad sker der? Hvad burde der ske? "virker ikke" er ikke synderligt informativt.
Avatar billede sjh Nybegynder
10. november 2008 - 22:42 #10
Kort sagt..

Jeg vil fjerne det Index som Jeg fjerner her:
document.body.removeChild(Custom.List[i].div);
Avatar billede sjh Nybegynder
10. november 2008 - 22:44 #11
Custom.List=Custom.List.slice(i, 1); Fjerner ALLE i Arrayet..
Avatar billede erikjacobsen Ekspert
10. november 2008 - 22:45 #12
Ja, og hvor kalder du remove?
Avatar billede sjh Nybegynder
10. november 2008 - 22:47 #13
det gør jeg på det div jeg klikker på -> this.div.onclick = Custom.remove;
Avatar billede sjh Nybegynder
10. november 2008 - 22:48 #14
Prøv den på selv:

Put koden i en fil : Custom.js

<html>
  <head>
    <title>Nyt Dokument</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <script src="Custom.js" type="text/javascript"></script>
  </head>
  <body>

  </body>
</html>
Avatar billede sjh Nybegynder
10. november 2008 - 22:49 #15
:P Prøv den selv :D
Avatar billede erikjacobsen Ekspert
10. november 2008 - 22:55 #16
Nah, der er flere ting galt. Prøv den her http://n0p.com/852329.php
Avatar billede sjh Nybegynder
10. november 2008 - 23:04 #17
flere ting ?? du kan da ikke få den til at virke når du udskifter "this" med "e" så er det jo kun når du bruger "Custom.remove(a);" under onload det virker og ikke når man klikker på divét
Avatar billede sjh Nybegynder
10. november 2008 - 23:06 #18
Men det virker med det du har lavet ->
Custom.List=Custom.List.slice(0, i).concat(Custom.List.slice(i+1));

Smid et svar
Avatar billede erikjacobsen Ekspert
10. november 2008 - 23:07 #19
Er du sikker på det hele virker?
Avatar billede sjh Nybegynder
10. november 2008 - 23:09 #20
Ja sådan da.. prøv :


var Custom = {
    init: function(text)
  {
    if (!Custom.List)
    {
      Custom.List = [];
    }
   
    this.text = text;
   
    Custom.List[Custom.List.length] = this;
   
    this.div = document.createElement('div');
    this.div.className = text;
    this.div.onclick = Custom.remove;
    this.div.appendChild(document.createTextNode(text));
    document.body.appendChild(this.div);
   
  },
  remove: function(e)
  {
    for(var i = 0; i < Custom.List.length; i++)
    {
      if (Custom.List[i].div == this)
      {
        document.body.removeChild(Custom.List[i].div);
        Custom.List=Custom.List.slice(0, i).concat(Custom.List.slice(i+1));
        break;
      }
    }
  }
};

window.onload = function()
{
  new Custom.init('div a');
  new Custom.init('div b');
  new Custom.init('div c');
  new Custom.init('div d');
}
Avatar billede sjh Nybegynder
10. november 2008 - 23:13 #21
Ja der skal lige den her med når der testes..

    var tmp = '';
    for(var i = 0; i < Custom.List.length; i++)
    {
      tmp += Custom.List[i].text + ', ';
    }
    alert(tmp);
Avatar billede erikjacobsen Ekspert
10. november 2008 - 23:13 #22
Det skal nok passe, når du siger det. Jeg havde ikke set at linien med "remove" var en del af dit script, så mine ændringer var bare for at få kunnet lave "slice"-n rigtigt.

Og jeg samler slet ikke på point, tak.
Avatar billede sjh Nybegynder
10. november 2008 - 23:40 #23
Nej jeg samler heller ikke på point.. men det var jo dig som løste problemet så smid nu bare et svar.. ;-)
Avatar billede w13 Novice
10. november 2008 - 23:41 #24
Du får ham ikke til det. =)
Avatar billede sjh Nybegynder
10. november 2008 - 23:58 #25
w13 : måske.. ellers kan du jo smide et svar.. :D
Avatar billede w13 Novice
11. november 2008 - 09:42 #26
Hehe. Vi ka' vel dele?
Avatar billede sjh Nybegynder
11. november 2008 - 16:18 #27
Ok, og mange tak for jeres hjælp.
Avatar billede w13 Novice
11. november 2008 - 16:54 #28
Tak for points! :)
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