Yo lo entiendo asi:
El problema vienen del contexto donde se ejecuta la funcion. Cuando se ejecuta reservar(), al pinchar en la imagen, dentro de la funcion "this" tienen como valor [object Window] es decir la ventana. Un truco que he encontrado es pasarle a la funcion el contexto:
Código HTML:
Ver original<img id="mesa1" src="icon.png" alt="mesa" onClick="myFunction(this)"/>
Con esto ya podemos usar javascript sin tener que usar jquery:
Código Javascript
:
Ver originalfunction myFunction(item){
var variable = item;
variable.setAttribute('src','icon2.png');
}
Imagino que jQuery lo que hace es pasar el contexto a la funcion y por eso se puede usar $(this).
He puesto un ejemplo aqui: [URL="http://jsfiddle.net/UJd3U/"]http://jsfiddle.net/UJd3U/[/URL]
Saludos.