buenas...
@patilanz, con respecto a
javascript:, lo que sucede es lo siguiente. el atributo
href del elemento <a>, solo acepta URLs. si tu pones código javascript ahí, el navegador no te lo va interpretar como javascript, sino como una ruta. es por ello que lleva el
pseudo-protocolo javascript: —no se que mejor nombre se le puede dar. en el segundo ejemplo,
onclick y el resto de los eventos, acepta código javascript y es por ello que no requiere el
pseudo-protocolo. de hecho, tu puedes escribir el código precedido por la secuencia
javascript: y el código funcionará igual. no obstante, no cobra el mismo significado que el
pseudo-protocolo. o sea,
href="javascript:codes"
no es lo mismo que
onclick="javascript:codes"
. en el segundo caso, la secuencia
javascript: es un
label de javascript.