De functie werkt inderdaad niet.
Het begint hier mee:
var vak = document.getElementById(vak).value;
var cijfer = document.getElementById(cijfer).value;
var weging = document.getElementById(weging).value;
moet worden
var vak = document.getElementById('vak').value;
var cijfer = document.getElementById('cijfer').value;
var weging = document.getElementById('weging').value;
En dan nog ...
je hebt geen id="weging"; je hebt die "nummer2" genoemd.
Zie lijn 165; je hebt dat element twee id's gegeven; dat mag niet.
Ik zou voorstellen om die id="nummer2" weg te laten.
----
Dit kan ook beter
var i = 0;
while (i<33) //aantal vakken
{
document.write("<option value='" + i + "'>" + vak[i] + "</option>");
i++;
}
Als je een incrementele i hebt, kan je beter een for-lus gebruiken; die zijn daarvoor ontworpen.
Altijd proberen vermijden om zo'n getal als 33 hard coded te gebruiken, diep in je code
var length = weging.length; //aantal vakken
for (var i=0; i<length; i++)
{
document.write("<option value='" + i + "'>" + vak[i] + "</option>");
}
-----
Wat je trouwens hier mee probeert te bereiken, is mij volkomen een raadsel
if(vak[i] == vak)
----
Meer algemeen:
Zorg dat je altijd duidelijk weet waarmee je bezig bent.
Is het een string? Is het een variabele-naam? Moet het wel of niet tussen aanhalingstekens? ...
Neem nu dit:
localStorage.setItem("name1", "data1");
een paar lijnen hoger heb je var name1 en var data1 aangemaakt. Ik veronderstel dan ook dat het de bedoeling is dat je die variabelen gaat gebruiken.
Als je die echter tussen aanhalingstekens zet, worden dat strings. Variabelen niet tussen aanhalingstekens zetten!