|
Language 2009/2010 (archief) 2008/2009 Meta |
J0910 /
S3-Les13We hebben in de klas enkele versimpelde javascript functies geschreven om cookies te gebruiken voor de stemwijzer, zie Javascript in de klas geschrevenStateless protocol Scripting (programmeertalen)
CLIENT vs SERVER
HTML HTML (statisch)
Javascript PHP, Python, CGI, ASP, etc. (scripting:
- maken verbinding met bv een database en;
- genereren HTML/Javascript voor de browser)
MySQL, etc. (database)
Cookies // Simpelst, cookie wordt verwijderd als browser wordt afgesloten: document.cookie = "cookie1=testcookie" // of (vollediger): document.cookie = "cookie1=testcookie; expires=Thu, 2 Aug 2001 20:47:11 UTC; path=/" Cookie uitlezen: // Een cookie is niets anders dan een regel tekst: window.alert( document.cookie ); // of (als je firebug geïnstalleerd hebt): console.log( document.cookie ); Javascript in de klas geschreven:
<script type="text/javascript">
window.alert('Hello world');
console.log('Hello world');
</script>
Functie die hele tientjes uitrekent voor bedrag (functies zijn kant-en-klare, herbruikbare stukjes code);
hoeveeltientjes = function( lunchgeld ){
tientjes = Math.floor( lunchgeld/10 );
//window.alert( tientjes );
console.log( tientjes );
}
Waardes wegschrijven in cookie (en uitlezen in firebug): document.cookie = "76=actief"; document.cookie = "79=ook actief"; document.cookie = "76=inactief"; console.log( document.cookie ); Javascript cookie-functies voor de stemwijzerOnze in de klas geschreven functies om cookies weg te schrijven en weer uit te lezen (functies zijn kant-en-klare, herbruikbare stukjes code, kopieer deze functies in je <head>):
schrijfCookie = function( vraag, antwoord ) {
document.cookie = vraag + "=" + antwoord;
return vraag + "=" + antwoord ;
}
leesCookie = function( welkevraag ) {
welkevraag = welkevraag + "=";
if( document.cookie.indexOf(welkevraag)==-1 ){ return false; }
antwoord = document.cookie.split( welkevraag )[1];
antwoord = antwoord.split(';')[0];
return antwoord ;
}
deleteCookie = function(name) {
var date = new Date();
date.setTime(date.getTime()+(-1*24*60*60*1000));
schrijfCookie(name+'=; expires='+date.toGMTString());
}
deleteAllCookies = function(){
var cookies = document.cookie.split(";");
for (var i = 0; i < cookies.length; i++) {
deleteCookie( cookies[i].split("=")[0] );
}
}
getNextCookiename = function( ) {
nextcookiename = document.cookie.split( '=' )[0];
// Deze regel delete de eerstvolgende cookie in de browser:
deleteCookie =( nextcookiename );
//window.location = nextcookiename; // (ga naar naam van cookie als url)
return nextcookiename;
}
En de bijbehorende html ('onclick=' kun je op ieder item in een pagina toepassen, bijvoorbeeld ook plaatjes in plaats van buttons):
Vraag 1: Mag ik u een paar vragen stellen?
<input type="button" onclick="schrijfCookie('vraag1','ja')" value="Ja !" />
<input type="button" onclick="schrijfCookie('vraag1','nee')" value="Nee !" />
<br />
Vraag 2: Mag ik u een paar vragen stellen?
<input type="button" onclick="schrijfCookie('vraag2','ja')" value="Ja !" />
<input type="button" onclick="schrijfCookie('vraag2','nee')" value="Nee !" />
<br />
Vraag 3: Mag ik u een paar vragen stellen?
<input type="button" onclick="schrijfCookie('vraag3','ja')" value="Ja !" />
<input type="button" onclick="schrijfCookie('vraag3','nee')" value="Nee !" />
<br />
<input type="button" onclick="leesCookie('vraag2')" value="Lees antwoord voor vraag 2" />
Iets doen met de opgeslagen cookiesGa naar de volgende opgeslagen cookie als url (moet dus bv. worden opgeslagen als 'vraag1.html'): <img src="nextquestion.jpg" onclick="window.location=getNextCookiename();" /> Maak niet-actieve vragen op de pagina onzichtbaar:
<head>
<script>
...
showHideVragen = function(){
if(leesCookie('vraag1')==false){
document.getElementById('vraag1').style.display='none'; }
if(leesCookie('vraag2')==false){
document.getElementById('vraag2').style.display='none'; }
if(leesCookie('vraag3')==false){
document.getElementById('vraag3').style.display='none'; }
//etc.
}
</script>
</head>
<body onload="showHideVragen();">
<div id="vraag1"> <content of div /> </div>
<div id="vraag2"> <content of div /> </div>
<div id="vraag3"> <content of div /> </div>
</body>
(advanced):Ieder Javascript framework werkt ook wel met cookies, de vraag is alleen of dit de moeite waard is... Oordeel zelf: jquery:cookies Margareth: http://net.tutsplus.com/tutorials/javascript-ajax/exactly-how-to-create-a-custom-jquery-accordion/ PPK originele cookie functiesDit zijn de originele functies van PPK voor gebruik van cookies vanuit javascript, de door ons geschreven functies doen hetzelfde maar zijn iets vereenvoudigd): (Zelf doen/doorlezen!; PPK on Cookies vanuit Javascript)
function createCookie(name,value,days) {
if (days) {
var date = new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
var expires = "; expires="+date.toGMTString();
}
else var expires = "";
document.cookie = name+"="+value+expires+"; path=/";
}
function readCookie(name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for(var i=0;i < ca.length;i++) {
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1,c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
}
return null;
}
function eraseCookie(name) {
createCookie(name,"",-1);
}
De functies worden gebruikt op deze manier:
// cookie plaatsen:
createCookie('cookie','testcookie',7);
// cookie lezen (en er iets mee doen):
var x = readCookie('cookie1');
if (x) {
[do something with x]
}
// cookie deleten:
eraseCookie('ppkcookie');
var imgList = Array();
imgList['op'] = "pagina_afbeeldingen/stemwijzer_def_DEF40.jpg";
imgList['pvda'] = "pagina_afbeeldingen/stemwijzer_def_DEF33.jpg";
imgList['vvd'] = "pagina_afbeeldingen/stemwijzer_def_DEF34.jpg";
imgList['groenl'] = "pagina_afbeeldingen/stemwijzer_def_DEF37.jpg";
imgList['d66'] = "pagina_afbeeldingen/stemwijzer_def_DEF35.jpg";
imgList['chrunie'] = "pagina_afbeeldingen/stemwijzer_def_DEF39.jpg";
imgList['cda'] = "pagina_afbeeldingen/stemwijzer_def_DEF36.jpg";
imgList['bvd'] = "pagina_afbeeldingen/stemwijzer_def_DEF38.jpg";
/*for (img in imgList){
document.write(imgList[img] + "<br />");
}*/
/*for(i=1; i<=15; i++){
document.write( leesCookie('vraag'+i) +"</br>" );
}*/
var op =0;
var pvda =0;
var vvd =0;
var groenl =0;
var d66 =0;
var chrunie =0;
var cda =0;
var bvd =0;
if(leesCookie('vraag1')=='eens'){ bvd++; }
if(leesCookie('vraag1')=='neutraal'){ ++; }
if(leesCookie('vraag1')=='oneens'){ ++; ++; }
if(leesCookie('vraag2')=='eens'){ ++; ++; }
if(leesCookie('vraag2')=='neutraal'){ ++; ++; }
if(leesCookie('vraag2')=='oneens'){ bvd++; ++; }
if(leesCookie('vraag3')=='eens'){ ++; ++; }
if(leesCookie('vraag3')=='neutraal'){ ++; }
if(leesCookie('vraag3')=='oneens'){ ++; ++; }
if(leesCookie('vraag4')=='eens'){ ++; ++; }
if(leesCookie('vraag4')=='neutraal'){ ++; ++; }
if(leesCookie('vraag4')=='oneens'){ ++; ++; }
if(leesCookie('vraag5')=='eens'){ ++; ++; }
if(leesCookie('vraag5')=='neutraal'){ ++; }
if(leesCookie('vraag5')=='oneens'){ ++; ++; }
if(leesCookie('vraag6')=='eens'){ ++; ++; }
if(leesCookie('vraag6')=='neutraal'){ ++; ++; }
if(leesCookie('vraag6')=='oneens'){ ++; ++; }
if(leesCookie('vraag7')=='eens'){ ++; ++; }
if(leesCookie('vraag7')=='neutraal'){ ++; }
if(leesCookie('vraag7')=='oneens'){ ++; ++; }
if(leesCookie('vraag8')=='eens'){ ++; ++; }
if(leesCookie('vraag8')=='neutraal'){ ++; ++; }
if(leesCookie('vraag8')=='oneens'){ ++; ++; }
if(leesCookie('vraag9')=='eens'){ ++; ++; }
if(leesCookie('vraag9')=='neutraal'){ ++; }
if(leesCookie('vraag9')=='oneens'){ op++; pvda++; }
if(leesCookie('vraag10')=='eens'){ op++; pvda++; }
if(leesCookie('vraag10')=='neutraal'){ op++; pvda++; }
if(leesCookie('vraag10')=='oneens'){ op++; pvda++; }
if(leesCookie('vraag11')=='eens'){ op++; pvda++; }
if(leesCookie('vraag11')=='neutraal'){ pvda++; }
if(leesCookie('vraag11')=='oneens'){ op++; pvda++; }
if(leesCookie('vraag12')=='eens'){ op++; pvda++; }
if(leesCookie('vraag12')=='neutraal'){ op++; pvda++; }
if(leesCookie('vraag12')=='oneens'){ op++; pvda++; }
if(leesCookie('vraag13')=='eens'){ op++; pvda++; }
if(leesCookie('vraag13')=='neutraal'){ pvda++; }
if(leesCookie('vraag13')=='oneens'){ op++; pvda++; }
if(leesCookie('vraag14')=='eens'){ op++; pvda++; }
if(leesCookie('vraag14')=='neutraal'){ op++; pvda++; }
if(leesCookie('vraag14')=='oneens'){ op++; pvda++; }
if(leesCookie('vraag15')=='eens'){ op++; pvda++; }
if(leesCookie('vraag15')=='neutraal'){ op++; pvda++; }
if(leesCookie('vraag15')=='oneens'){ op++; pvda++; }
</script>
|