script voor staafdiagrammen werkt niet

Status
Niet open voor verdere reacties.

lexmoen

Nieuwe gebruiker
Lid geworden
13 aug 2015
Berichten
2
Ik heb een mooi scriptje gevonden in javascript om staafdiagrammen te maken, echter, het werkt niet.

wat is er fout in deze regels?
HTML:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
<title>Untitled</title>

<script language="JavaScript" type="text/javascript">
<!-- 
/* ---------- Zaken die gewijzigd kunnen worden ---------- */
var AantalBalken=6, maxPixel=250, breedte=15;

/* ---------- Hieronder niets meer wijzigen ---------- */
function getParam(id,def) {   // Trap query parameters
  if(!window.location.search || ! id) {
    return def;
  } else {
    var scrap = location.search.toLowerCase();
    var par_begin = scrap.indexOf(id.toLowerCase());
    var par_end  = scrap.indexOf('&',par_begin+id.length+1);
    if (par_end < par_begin) { par_end=scrap.length; }
    if (par_begin != -1) {
      return unescape(scrap.substring(par_begin+id.length+1,par_end));
    } else {
      return def;
    }
  }
}
// Einde van dit Script -->
</script>

</head>
<body>
<script language="JavaScript" type="text/javascript">
<!--
document.write('<table border="1" cellspacing="1" cellpadding="2" bgcolor="#DDEEFF">');
var Tekst = getParam('tt','');
if (Tekst.length > 0) {
  document.write('<tr><td bgcolor="#5588CC" align="center"><font color="#FFFFFF">');
  document.write(Tekst,'</font></td></tr>');
}
document.write('<tr><td>');
/* ---- Tweede (Geneste) tabel en de titelbalk ---- */
document.write('<table border="0" cellpadding="2" cellspacing="0" width="100%">');

// Haal de subtitel op
Tekst = getParam('stt','');
  
// Haal alle getallen uit de serie, tel ze op en zoek de grootste
var som = new Number(0), aantal = new Number(0), hulp = new Array(AantalBalken+1);
hulp[0] = 0;
for (i=1; i<=AantalBalken; i++) {
  hulp[i] = getParam('g'+i,'*');
  if (hulp[i] != '*') { aantal++; som += parseInt(hulp[i]); };
}
if (isNaN(som)) { // Stoppen als er een fout is
  window.alert('Fout in de invoer!');
  window.close();
}
for(i=1; i<=AantalBalken; i++){ if (parseInt(hulp[0] < parseInt(hulp[i])) hulp[0] = parseInt(hulp[i]); };

// Schrijf de subtitel balk en open een nieuwe tabel-regel
if (getParam('type','s') == 's') aantal = 2;
document.write('<tr><td colspan="',aantal,'" align="center"><b>',Tekst,' [Totaal ',som,']</b></td></tr>');
document.write('<tr><td colspan="',aantal,'">&nbsp;</td></tr>');
  
// Maak onderscheid tussen een staaf- of kolomgrafiek
var getal;
if (getParam('type','s') == 's') {
  for (i=1; i<=AantalBalken; i++) {
    getal = getParam('g'+i,'*');
    if (getal != '*') {
      document.write('<tr align="left" valign="top"><td>',getParam('n'+i,''),' (',getal,')</td>');
      document.write('<td><img src="pixel-',i,'.gif" border="0" width="',Math.round(getal/hulp[0]*maxPixel),'" height="',breedte,'">&nbsp;',Math.round(getal/som*100),'%</td></tr>');
    }
  }
} else {
  document.write('<tr align="center" valign="bottom">');
  for (i=1; i<=AantalBalken; i++) {
    getal = getParam('g'+i,'*');
    if (getal != '*') {
      document.write('<td>(',getal,')<br>&nbsp;<br><img src="pixel-',i,'.gif" border= "0" width="',breedte,'" height="',Math.round(getal/hulp[0]*maxPixel/2),'"></td>');
    }
  }
  document.write('</tr><tr align="center" valign="bottom">');
  for (i=1; i<=AantalBalken; i++) {
    getal = getParam('g'+i,'*');
    if (getal != '*') {
      document.write('<td>',Math.round(getal/som*100),'%</td>');
    }
  }    
}
document.write('</tr></table>'); // Einde geneste tabel
document.write('</tr></table>'); // Einde buitenste tabel
// Einde van dit Script -->
</script>

</body>
</html>
 
Laatst bewerkt door een moderator:
Als je in de console van je browser (meestal moet je F12 drukken) kijkt, zie je dat er een "Syntax Error" op regel 59 is. Daar staat nu:
Code:
for(i=1; i<=AantalBalken; i++){ if (parseInt(hulp[0] < parseInt(hulp[i])) hulp[0] = parseInt(hulp[i]); };
Het moet zijn:
Code:
for(i=1; i<=AantalBalken; i++){ if (parseInt(hulp[0] < parseInt(hulp[i]))) hulp[0] = parseInt(hulp[i]); };
Zie je het verschil? Het if-statement werd niet afgesloten, maar nu wel.

Verder zou ik je aanraden om Chart.js te gebruiken voor het maken van (staaf-)diagrammen. Het even begrijpen van Chart.js kan even lastig zijn, maar als je het eenmaal hebt, heb je super diagrammen :)
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan