Avatar billede tentakkel Nybegynder
01. februar 2001 - 21:15 Der er 6 kommentarer og
1 løsning

Lidt kompliceret Javascript problm - få det til at funge

Hej - jeg er gladeligt begyndt at programer i Javascript - og er også kommet langt (synes jeg selv :) - men denne nø kan jeg ikke lige knække - hvorfor gider gølgende kode ikke at smytte det ud jeg gerne vil have den til?









<script>

h=25
foer = \'<form action=\"\" name=\"myform\">  <TABLE border=\"0\" cellspacing=\"0\" cellpadding=\"0\">    <TR>      <TD background=\"../spot.gif\"><IMG border=\"0\" src=\"../base/non.gif\" width=\"1\" height=\"30\"></TD>      <TD>        <TABLE border=\"0\" cellspacing=\"0\" cellpadding=\"0\">          <TR>            <TD><IMG border=\"0\" src=\"../base/non.gif\" width=\"7\" height=\"1\"></TD>            <TD><FONT size=\"-1\"><SELECT name=\"DDlinks\" onchange=\"LinkUp(this.form)\" style=\"font-size:10px;width:150\">\'
efter = \'</SELECT></FONT></TD>  </TR>        </TABLE>      </TD>    </TR>    <TR>      <TD background=\"../spot.gif\"><IMG border=\"0\" src=\"../base/non.gif\" width=\"1\" height=\"1\"></TD>      <TD><IMG src=\"../base/rfadestor.gif\" border=\"0\" width=\"200\" height=\"1\"></TD>    </TR>  </TABLE></FORM>\'


//select stederne
var hvilke_0 = new Array();
hvilke_0[0] =new kombine(\'Select from the Home\', \'\')
hvilke_0[1] =new kombine(\'Home\', \'../index.htm\')


var hvilke_1 = new Array();
hvilke_0[0] =new kombine(\'Select from Site 1\', \'\')
hvilke_0[1] =new kombine(\'Wa2\', \'../2.htm\')
hvilke_0[2] =new kombine(\'Loc3\', \'../2.htm\')
hvilke_0[3] =new kombine(\'4\', \'../2.htm\')
hvilke_0[4] =new kombine(\'5\', \'../2.htm\')
hvilke_0[5] =new kombine(\'5n\', \'../2.htm\')


var hvilke_2 = new Array();
hvilke_0[0] =new kombine(\'Select from Side mol\', \'\')
hvilke_0[1] =new kombine(\'Wats new\', \'../3.htm\')
hvilke_0[2] =new kombine(\'Location\', \'../3.htm\')
hvilke_0[3] =new kombine(\'Location\', \'../3.htm\')
hvilke_0[4] =new kombine(\'Location\', \'../3.htm\')
hvilke_0[5] =new kombine(\'Location\', \'../3.htm\')

var hvilke_3 = new Array();
hvilke_0[0] =new kombine(\'Select from News\', \'\')
hvilke_0[1] =new kombine(\'Introdution\', \'../4.htm\')
hvilke_0[2] =new kombine(\'Solution\', \'../4.htm\')


function kombine(hvad, hvor){
this.hvad=hvad;
this.hvor=hvor;
}





function samle(y){
    hju = eval(\'hvilke_\'+y)

    with (eval(hju+\'[0]\')){
        out = \'<OPTION selected>\'+hvad+\'</OPTION>\'
    }
    for (var x=1; x!=eval(hju+\'.length\'); x++){
        with (eval(hju+\'[\'+x+\']\')){
        out += \'<OPTION value=\"\'+hvor+\'\">\'+hvad+\'</OPTION>\'
        }
    }
return out;
}






var wath=new Array();
wath[0] = samle(0)
wath[1] = samle(1)
wath[2] = samle(2)
wath[3] = samle(3)



var layernr=new Array();


layernr[0]=new layer(foer+wath[0]+efter,0,h)

layernr[1]=new layer(foer+wath[1]+efter,25,h)

layernr[2]=new layer(foer+wath[2]+efter,100,h)

layernr[3]=new layer(foer+wath[3]+efter,230,h)



function layer(kode,venstre,top) {
this.kode=kode;
this.venstre=venstre;
this.top=top; }










<script>



   

Avatar billede tentakkel Nybegynder
01. februar 2001 - 21:19 #1
Det er koden

with (layernr[0]){
document.write(kode)
}
kan

der skal fungere
Avatar billede emileej Nybegynder
01. februar 2001 - 21:44 #2
Får du nogle fejlmeddelelser? (Må indrømme, at jeg aldrig har set width brugt i JavaScript - kun i C++ og Delphi :)

E-)mil
Avatar billede jakoba Nybegynder
01. februar 2001 - 22:09 #3
<script>

h=25
          // Sådan en MEGA-streng bliver mere overskuelig hvis den skrives som
          // en sum af strenge:
foer = \'<form action=\"\" name=\"myform\">\'
        +\'  <TABLE border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\' 
        +\'  <TR>\'
        +\'    <TD background=\"../spot.gif\">\'
        +\'      <IMG border=\"0\" src=\"../base/non.gif\" width=\"1\"  height=\"30\"></TD>\'              +\'    <TD>\'
        +\'      <TABLE border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\'
        +\'        <TR>\'
        +\'          <TD><IMG border=\"0\" src=\"../base/non.gif\" width=\"7\" height=\"1\"></TD>\'         
        +\'          <TD><FONT size=\"-1\"><SELECT name=\"DDlinks\" \'
        +\'            onchange=\"LinkUp(this.form)\" style=\"font-size:10px;width:150\">\';

efter = \'</SELECT></FONT></TD>  </TR>        </TABLE>      </TD>    </TR>    <TR>      <TD
background=\"../spot.gif\"><IMG border=\"0\" src=\"../base/non.gif\" width=\"1\" height=\"1\"></TD>   
<TD><IMG src=\"../base/rfadestor.gif\" border=\"0\" width=\"200\" height=\"1\"></TD>    </TR>
</TABLE></FORM>\'


//select stederne
var hvilke_0 = new Array();
hvilke_0[0] =new kombine(\'Select from the Home\', \'\')  // kombine er ikke defineret
hvilke_0[1] =new kombine(\'Home\', \'../index.htm\')    // endnu og returnerer intet.

var hvilke_1 = new Array();
hvilke_0[0] =new kombine(\'Select from Site 1\', \'\')    // du mener vist hvilke_1[0]=
hvilke_0[1] =new kombine(\'Wa2\', \'../2.htm\')
hvilke_0[2] =new kombine(\'Loc3\', \'../2.htm\')
hvilke_0[3] =new kombine(\'4\', \'../2.htm\')
hvilke_0[4] =new kombine(\'5\', \'../2.htm\')
hvilke_0[5] =new kombine(\'5n\', \'../2.htm\')

var hvilke_2 = new Array();
hvilke_0[0] =new kombine(\'Select from Side mol\', \'\')    // du mener vist hvilke_2[0]=
hvilke_0[1] =new kombine(\'Wats new\', \'../3.htm\')
hvilke_0[2] =new kombine(\'Location\', \'../3.htm\')
hvilke_0[3] =new kombine(\'Location\', \'../3.htm\')
hvilke_0[4] =new kombine(\'Location\', \'../3.htm\')
hvilke_0[5] =new kombine(\'Location\', \'../3.htm\')

var hvilke_3 = new Array();
hvilke_0[0] =new kombine(\'Select from News\', \'\')      // inline kald til kombine() før den
hvilke_0[1] =new kombine(\'Introdution\', \'../4.htm\')  // er defineret
hvilke_0[2] =new kombine(\'Solution\', \'../4.htm\')    // du mener vist hvilke_3[0]=

function kombine(hvad, hvor){
  this.hvad=hvad;
  this.hvor=hvor;
                        // der mangler en  return this;    sætning
}

function samle(y){
  hju = eval(\'hvilke_\'+y)
                          // første eval burde være nok. anden forsøger eval af indholdet af
                          // indholdet af hvilke_0[0]
  with (eval(hju+\'[0]\')){
      out = \'<OPTION selected>\'+hvad+\'</OPTION>\'
  }                        // adskil sætninger med ; nogen gange skal de være der
  for (var x=1; x!=eval(hju+\'.length\'); x++){
    with (eval(hju+\'[\'+x+\']\')){
        out += \'<OPTION value=\"\'+hvor+\'\">\'+hvad+\'</OPTION>\'
    }
  };
  return out;
}

var wath=new Array();
wath[0] = samle(0)
wath[1] = samle(1)
wath[2] = samle(2)
wath[3] = samle(3)

var layernr=new Array();
layernr[0]=new layer(foer+wath[0]+efter,0,h)      // funktionen layer() defineres først
layernr[1]=new layer(foer+wath[1]+efter,25,h)    // efter disse inline kald til den
layernr[2]=new layer(foer+wath[2]+efter,100,h)
layernr[3]=new layer(foer+wath[3]+efter,230,h)

function layer(kode,venstre,top) {  //  layer er et standardord i NS
  this.kode=kode;
  this.venstre=venstre;
  this.top=top;
                        // bør have en      return this;      for at returnere det skabte objekt
};

<script>

mvh JakobA
Avatar billede jakoba Nybegynder
02. februar 2001 - 07:25 #4
du kan initiere et array idet du skaber det. fx

var watch = new Array( samle(0), samle(1), samle(2), samle(3) );

men medmindre du bruger det der watch array andre steder jeg ikke kan se er det da nemmere bare at kvitte det og direkte skrive:

var layernr = new Array (
            new Array ( foer +samle(0) +efter,  0, h ),
            new Array ( foer +samle(1) +efter,  25, h ),
            new Array ( foer +samle(2) +efter, 100, h ),
            new Array ( foer +samle(3) +efter, 230, h )
                                      );

når du så skal skrive din kode bliver det noget i retning af:
  var dettelag = layernr[0];            // with findes og virker, men det er som regel
                                                      // nemmere blot at lave en pointer
  document.write( dettelag[0] );    // kode
Avatar billede jakoba Nybegynder
02. februar 2001 - 07:55 #5
brug samme system i dit hvilke array, så kan du også slippe af med eval\'erne (eval er en pestilens, den gør koden uoverskuelig og er dyr i både memory og CPU-tid)

var hvilke = new Array (
              new Array ( new Array ( \'Select from the Home\', \'\' ),
                                new Array ( \'Home\', \'../index.htm\' )
                              ),
              new Array ( new Array ( \'Select from Site 1\', \'\' ),
                                new Array ( \'Wa2\', \'../2.htm\' ),
                                new Array ( \'Loc3\', \'../2.htm\' ),
                                new Array ( \'4\', \'../2.htm\' ),
                                new Array ( \'5\', \'../2.htm\' ),
                                new Array ( \'5n\', \'../2.htm\' )
                              ),
              new Array ( new Array ( \'Select from Side mol\', \'\' ),
                                new Array ( \'Wats new\', \'../3.htm\' ),
                                new Array ( \'Location\', \'../3.htm\' ),
                                new Array ( \'Location\', \'../3.htm\' ),
                                new Array ( \'Location\', \'../3.htm\' ),
                                new Array ( \'Location\', \'../3.htm\' ),
                                new Array ( \'Location\', \'../3.htm\' )
                              ),
              new Array ( new Array ( \'Select from News\', \'\' ),
                                new Array ( \'Introdution\', \'../4.htm\' ),
                                new Array ( \'Solution\', \'../4.htm\' )
                              )
                                    );

var hvad = 0;    // for at gøre det lidt menneskeligt med alle de indexer :)
var hvor =1;
function samle(y) {
  var hju = hvilke[y];
  var out = \'<OPTION selected>\'+hju[0][hvad]+\'</OPTION>\';
  for (var x=1; x<hju.length; x++){
        out += \'<OPTION value=\"\'+hju[x][hvor]+\'\">\'+hju[x][hvad]+\'</OPTION>\';
  };
  return out;
}; //end samle ( heltal )

mvh JakobA
Avatar billede tentakkel Nybegynder
04. februar 2001 - 23:17 #6
emilieej --> jeg ANER ikke hvad man plejer at benytte - men jeg har åbenbart set det på en side - og så har jeg bare brugt det siden uden at tænke på om det var javascript - eller hvad - jeg skrev i :)

--> beklage - jeg har lige haft vrøvl med en ADSL forbindelse - så jeg har ikke kunne komme ind på eksperten (dette er det første gang jeg er på siden mit nedbrud) - giv mig lige et dag eller to så jeg kan se på det - og så skal jeg nok acceptere/svare
Avatar billede tentakkel Nybegynder
04. februar 2001 - 23:35 #7
--> jakoba - jeg er meget glad for alle dine kommentare (det lader da til at du har lidt styr på JS ;)

jeg troede at når man kaldte en function så var det lige meget hvor den var henne - den blev bare kaldt

du har naturligvis ret i at det er hvilke_(nummer)[0] - jeg mener ikke hvilke_0[0] alle steder
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