Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

[Javascript] Tekst ophalen uit externdocument

Pagina: 1
Acties:
  • 151 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Ik moet voor school een site maken. De bedoeling is dat het een simpele site moet worden, omdat ik er weinig tijd voor gekregen heb (vrijdag moet het al af zijn). Ik heb dus bedacht dat ik via een javascript tekst kan ophalen uit een externbestand (bijvoorbeeld menu.txt) en het plaatst in die pagina.

Voorbeeld:
Dit staat er in menu.txt (dit is het externe bestand)
code:
1
2
3
4
<h1>Voorbeeld </h1>
<h1>Voorbeeld2</h1>
<h1>Voorbeeld3</h1>
<h1>Voorbeeld4</h1>


Dit wordt dus in in de html pagina geplaatst:
code:
1
2
3
<div id="menu">
<!--hier staat een javascript, die de content ophaalt uit menu.txt en hier plaatst-->
</div>


Door middel van die script krijg je dus hetzelfde effect als je een pagina zo zou maken:
code:
1
2
3
4
5
6
<div id="menu">
<h1>Voorbeeld </h1>
<h1>Voorbeeld2</h1>
<h1>Voorbeeld3</h1>
<h1>Voorbeeld4</h1>
</div>


Het voordeel als ik een script gebruik, is dat als ik iets verander in menu.txt, het menu in alle html pagina's verandert en ik dus niet alle html pagina's hoef aan te passen. Als ik dus in menu.txt "<h1>Voorbeeld5</h1>" erbij zou plaatsen verschijnt dit in alle pagina's.

Mijn probleem is dat ik niet weet hoe ik zo`n script zou moeten maken. Ik heb google en de search op het forum gebruikt, maar ik heb niks kunnen vinden. Dit is wat ik denk dat in ieder geval in het script hoort:
code:
1
2
3
<script type="text/javascript">
document.write(<!-- Ik weet dus niet wat hier moet komen //-->)
</script>


Zoals je ziet weet ik niet wat achter document.write hoort.

Mijn vraag is dus: Hoe maak ik deze script af?

  • voodooless
  • Registratie: Januari 2002
  • Laatst online: 30-11 11:20

voodooless

Sound is no voodoo!

Dit soort dingen wil je toch echt serverside doen eigenlijk. Wil/kan je dat niet, dan heb je nog altijd framesets of iframes (de vraag is echter of je die zou willen gebruiken). En als het dan toch via javascript moet, kijk dan maar eens hoe je via ajax content op je pagina kunt updaten. voorbeelden genoeg te vinden :)

Do diamonds shine on the dark side of the moon :?


Verwijderd

Topicstarter
Ik moet de site van mij usb stick kunnen draaien, dus serverside gaat niet. En framesets wil ik inderdaad niet gebruiken (lelijke dingen :X ).

Wat ik net bedacht heb, is wat als ik ook de script uit het html bestand haal.

Dus zo iets als dit in het html bestand:
code:
1
2
<script type="text/javascript" src="menu.js">
</script>


En dan de source:
code:
1
2
3
4
5
6
Document.Write(<h1>Voorbeeld1</h1>
               <h1>Voorbeeld2</h1>
               <h1>Voorbeeld3</h1>
               <h1>Voorbeeld4</h1>
               <h1>Voorbeeld5</h1>
               <h1>Voorbeeld6</h1>)


Ik heb dit dus werkend gekregen, alleen ik weet niet dit misschien erg omslachtig is?

Edit: Blijkbaar had ik in de html code ook nog content staan waardoor ik dit verwarde met mijn script. Ik heb het dus niet werkend, dus mijn tweede vraag is hoe krijg ik dit dan wel werkend?

[ Voor 13% gewijzigd door Verwijderd op 17-10-2007 17:33 ]


  • moozzuzz
  • Registratie: Januari 2005
  • Niet online
Persoonlijk zou ik vlug lokaal een Apache installeren en het in PHP fixen. Desnoods laat je er nadien een site-ripper op los die alles (opnieuw) lokaal naar statische pagina's converteert.

JS:
Je zal door je DOM-tree moeten lopen vrees ik. Zoek es op select by ID en innerHTML.Sowieso zou ik werken met een extern js-bestand, want een txt/*-bestand inlezen lijkt me niet mogelijk (ivm veiligheidsinstellingen).

[ Voor 18% gewijzigd door moozzuzz op 17-10-2007 17:43 ]


Verwijderd

Topicstarter
Lokaal dingen instaleren gaat niet lukken. Dit moet ik ook niet voor een vak doen (ik zit nog maar in 4Gym), maar is iets wat je 1 keer per jaar doet (we hebben namelijk een evenement, waarbij je als klas allerlei onderdelen moet doen en proberen beter te zijn dan andere klassen).

Op dit moment kan ik ook niet echt duidelijke dingen vinden over wat je zei Moozzuzz. Ondertussen heb ik wel wat gevonden zodat het werkt:

In html
code:
1
2
<script type="text/javascript" src="menu.js">
</script>


in menu.js
code:
1
2
3
4
5
6
document.write("<h1>Voorbeeld1</h1>")
document.write("<h1>Voorbeeld2</h1>")
document.write("<h1>Voorbeeld3</h1>")
document.write("<h1>Voorbeeld4</h1>")
document.write("<h1>Voorbeeld5</h1>")
document.write("<h1>Voorbeeld6</h1>")


Blijkbaar moet ik dus voor iedere regel tekst een document.write aanmaken, is dit normaal?

  • Mammon
  • Registratie: December 2006
  • Laatst online: 23-11 13:55
download wos (webserver on a stick) kan je lokaal een webserver draaien met php mysql. Werkt voor mij geweldig. Heb je het niet meer nodig dan gooi je het gewoon van je stick af.

  • WeeJeWel
  • Registratie: April 2007
  • Laatst online: 25-11 11:26
Dit werkt best wel goed :-)

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
function clientSideInclude(id, url) {
  var req = false;
  // For Safari, Firefox, and other non-MS browsers
  if (window.XMLHttpRequest) {
    try {
      req = new XMLHttpRequest();
    } catch (e) {
      req = false;
    }
  } else if (window.ActiveXObject) {
    // For Internet Explorer on Windows
    try {
      req = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
      try {
        req = new ActiveXObject("Microsoft.XMLHTTP");
      } catch (e) {
        req = false;
      }
    }
  }
 var element = document.getElementById(id);
 if (!element) {
  alert("Bad id " + id +
   "passed to clientSideInclude." +
   "You need a div or span element " +
   "with this id in your page.");
  return;
 }
  if (req) {
    // Synchronous request, wait till we have it all
    req.open('GET', url, false);
    req.send(null);
    element.innerHTML = req.responseText;
  } else {
    element.innerHTML =
   "Sorry, your browser does not support " +
      "XMLHTTPRequest objects. This page requires " +
      "Internet Explorer 5 or better for Windows, " +
      "or Firefox for any system, or Safari. Other " +
      "compatible browsers may also exist.";
  }
}


Je gebruikt hem dus bijvoorbeeld zo:


<body onload="clientSideInclude('menudiv', 'menu.txt')" >
<div id="menudiv>
<!-- hier komt het menu van menu.txt -->
</div>
etc..

[ Voor 6% gewijzigd door WeeJeWel op 17-10-2007 20:23 ]

Homey — Critics are those without skills to create.

Pagina: 1