[js] include functie

Pagina: 1
Acties:

  • Brent
  • Registratie: September 2001
  • Nu online
Is er een handige inculde functie in javascript (dat je een file in een ander file kan opnemen? Mijn poging om het met variabelen te doen (http://gathering.tweakers.net/forum/list_messages/363087/1), gaan niet helmaal goed omdat ik geen scriptjes in de variabelen kan laten runnen, het gaat dan helemaal fout. Is er zo'n functie of anders iets wat op het probeersel in het andere topic lijkt? Het doel is eigenlijk dat ik in een .js file de hele opmaak zet, en in de html pagina's zelf alle nog maar de tekst en plaatjes etc. plaats en het algemene opmaak script aanroep (hiermee bedoel ik du niet alleen css, maar gewoon de algehele vormgeving met een menu, tabellen en poll). alvast bedankt.

Humanist | Kernpower! | Determinist | Verken uw geest | Politiek dakloos


Verwijderd

Javascript kan niet met includes werken, omdat het geen lees/schrijf toegang heeft op bestanden (en er zijn simpelweg geen functies voor)

Logisch ook, wat anders kun je nare dingen doen, als je wilt leg ik dat wel uit, maar ik neem aan dat je dat zelf ook wel kunt bedenken.

Je kunt wel een soort templates gebruiken als je ze maar in .js files gooit, dus
code:
1
document.write('<table>');

enzovoorts.

met <script type="text/javascript" language="javascript" src="blaat.js"></script> gooi je dat in je source.

  • RM-rf
  • Registratie: September 2000
  • Laatst online: 14:59

RM-rf

1 2 3 4 5 7 6 8 9

een variabele wordt gedefined op het moment dat hij geschreven wordt,
code:
1
2
3
var opmaak = '<script>document.write(\'<table '+
   border="1"><tr><td>menu</td><td>'+
   inhoud+'</td></tr></table>\');</script>';

dus als inhoud op dit moment nog undefined is dan wordt die niet in var opmaak meegenomen.

de oplossing is ipv een var opmaak, gewoon een function writeOpmaak() te definieren:
code:
1
2
3
4
5
6
function writeOpmaak()
{
   document.write('<table '+
   border="1"><tr><td>menu</td><td>'+
   inhoud+'</td></tr></table>')
}

overigens die onlogische dubbelle document.write eruit gehaald, als je het werkelijk op die onpraktische manier wil doen, doe dan
code:
1
2
3
var opmaak = '<script>document.write(\'<table '+
   border="1"><tr><td>menu</td><td>\'+
   inhoud+\'</td></tr></table>\');</script>';

maar eerlijk gezegd vind ik dit nogal 'flamenco dansen op houten klompen'

leuk surrealistisch programmeerwerk, maar niet praktisch toepasbaar, tenzij je wilt verdwalen in je eigen scripts

Intelligente mensen zoeken in tijden van crisis naar oplossingen, Idioten zoeken dan schuldigen


  • Brent
  • Registratie: September 2001
  • Nu online
Ik heb het nu met functies gedaan. dat werkt, maar maar nog steeds niet dat ene scriptje van de img (zie andere topic).
Wat in jouw ogen onoverzichtelijk is was alleen maar om te testen of ik ook een script in een script kon zetten.

Wat ik wil berijken is dit:

in de .js staat alles over de vormgeving, plaatsing v/d inhoud menu enz. in de .htm wordt de .js aangeroepen en staat die inhoud. Op deze manier hoef ik dus alleen maar vanaf ieder pagina de .js aan te roepen die verder voor de opmaak zorgt. dan hoef ik dat niet per pagina in te stellen.

schematische weergeving:
.js:
Menu, linker kolom, plaatsing van inhoud

.htm:
aanroepen van .js
definiering inhoud (hier wil ik dus ook scripts in kunnen plaatsen)

Dat is het. Dit lukt me tot zo ver prima. maar nou komt het moeilijke: het plaatsen van scripts in de inhoud. dat wil me met geen mogelijkheid lukken.althans, niet de moeilijkere een document.write lukt nog, maar een if en else gaat fout. voorbeeld:

engine.js:
code:
1
2
3
4
5
6
function run() {document.write("\
<table><tr><td>menu urls en links\
</td><td valign='top'>\
<script>text()</script>\
</td></tr></table>\
")}

screen.htm:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
<head>

<script language="JavaScript">
function GetParameters(){
    var search, paramStrs, params, i;
    var keyval, key, val;
    search = self.location.search;
    search = search.substring(1, search.length);
    paramStrs = search.split('&');
    params = new Array();
    for (i=0; i<paramStrs.length; i++){
      keyval = paramStrs[i].split('=');
      if (keyval.length>0){
        key = unescape(keyval[0]);
        if (keyval.length>1)
            val = unescape(keyval[1]);
        else
            val = undefined;
        params[key] = val;
      }
    }

    return(params);
}

var params = GetParameters();
var image = params['img'];
</script>

<script>
function text() {document.write("\
  <table>\
    <tr>\
      <th>\
        Plaatje\
      </th>\
    </tr>\
    <tr>\
      <td>\
          <script>\
        if(image != undefined) {\
        document.write('[img]\"'+image+'\"[/img]');\
        }\
        else {\
        document.write('Geen plaatje!');\
        }</script>\
      <a href='javascript:history.back(1)'>&lt; Terug</a>\
      </td>\
    </tr>\
  </table>\
")}
</script>

<script src="engine.js">
</script>

</head>
<body>

<script>
run()
</script>

</body>

met het scriptje in screen.htm is het de bedoeling dynamisch plaatjes te zien (screen?img=image.gif laat image.gif in de browser zien enz. en als je niets invult staat er 'geen plaatje').

Hoe krijg ik het script (over die plaatjes) in het script werkende? ik heb al geprobeerd om ook daar een functie van te maken maar dat werkt ook niet. Help :'(

Humanist | Kernpower! | Determinist | Verken uw geest | Politiek dakloos


  • RM-rf
  • Registratie: September 2000
  • Laatst online: 14:59

RM-rf

1 2 3 4 5 7 6 8 9

hmmz, slecht op zitten letten,

het plaatsen van SCRIPT tags in javascript variabelen (dus via document.write te laten schrijven en uitvoeren) kan wel, maar heeft één nogo:

de </SCRIPT>-tag mag nooit in een javascript voorkomen, dit betekent ten allen tijden be-eindiging van de scripting-content (html als markup-language blijft altijd de container en deze interpreteerd alsnog de tags, zelfs in een area voor de javascript-engine, draait de html-interpretator erboven, en bij </SCRIPT> is het schluss en neemt ie de tent weer over)

de runaround is eenvoudig, maar heb er zelf ook best een plakbanderig gevoel over:
code:
1
document.write('<script type="text/javascript">blah = "boo"</sc'+'ript>')

ofetwel de closing tag doorbreken door de quotes en verbinden met een + ; de html-interpretator ziet geen closing tag meer (de blinde vink ;) )

Intelligente mensen zoeken in tijden van crisis naar oplossingen, Idioten zoeken dan schuldigen


  • Brent
  • Registratie: September 2001
  • Nu online
JAHOO!!! hij doet het. bedankt!

Humanist | Kernpower! | Determinist | Verken uw geest | Politiek dakloos

Pagina: 1