The code below works on a live site but I can't get it to run on the site jsfiddle .
See this for example.
Can anyone tell me why it's not working on jsfiddle?
On the console it logs: ReferenceError: fillList is not defined
and ReferenceError: mySelectList is not defined
.
The code works as you can see when it's embedded here as snippet:
The functions you define are defined in an onload function, so whereas before they were referenceable, because they are defined in that function they can only be referenced from within that function. You reference them as globals in your HTML. You have three options
a) ( easiest, quickest, not ideal ) - change function blah(){}
to window.blah = function(){};
making the functions global.
b) ( ideal way ) - use unobtrusive Javascript to attach behaviour to DOM elements from within the JS solely, meaning separate HTML from JS.
c) Make the jsfiddle not wrap the stuff onload. Change onLoad
to no wrap ( body or head ).
So instead of <p onclick="lol()" id="foo">
you'd do var e = document.getElementById('foo'); e.onclick = lol;
in the JS only.
I recommend b as it encourages best practices.