Quizá estos ejemplos te den una idea.
Este está basado en la última opción que te comenté:
Código PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sin título</title>
<script type="text/javascript">
function agregar_carrito(el) {
//notar que en realidad retornamos una función anónima:
return function(){
//acá, en lugar del alert, lo que necesites
alert(el['nombre']+' '+el['color']+'-->'+el['precio']);
return false;
}
}
function setItems(){
var items=[{nombre:'mochila',precio:2.5,color:'verde'},{nombre:'cuaderno',precio:0.5,color:'azul'},{nombre:'lápiz',precio:.1,color:'negro'}],i=0,l=items.length,a;
for(;i<l;i++){
a = document.createElement('a');
a.href='#';
a.innerHTML = items[i]['nombre']+' '+items[i]['color']+'-->'+items[i]['precio'];
(function(el){a.onclick = agregar_carrito(el);})(items[i]);
document.body.appendChild(a);
document.body.appendChild(document.createElement('br'));
}
}
onload=setItems;
</script>
</head>
<body>
</body>
</html>
Este, en cambio, es más parecido a lo que solicitaste en tu último post. Está basado en los setters y getters de atributos. Consiste en añadir atributos customizados a elementos html. Durante mucho tiempo fue considerado una mala práctica y en algunos navegadores, si se usaba mal, podía traer problemas de memoria. Pero en html 5, pueden añadirse
atributos data, así que
"Viva la fiesta
Viva la noche
...
Johnny, la gente está muy loca
...
"
:
Código PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sin título</title>
<script type="text/javascript">
function agregar_carrito() {
/*
ver en html 5:
this.dataset.nombre,this.dataset.color y this.dataset.precio
*/
alert(this.getAttribute('data-nombre')+' '+this.getAttribute('data-color')+'-->'+this.getAttribute('data-precio'));
return false;
}
function setItems(){
var items=[{nombre:'mochila',precio:2.5,color:'verde'},{nombre:'cuaderno',precio:0.5,color:'azul'},{nombre:'lápiz',precio:.1,color:'negro'}],i=0,l=items.length,a;
for(;i<l;i++){
a = document.createElement('a');
a.href='#';
a.innerHTML = items[i]['nombre']+' '+items[i]['color']+'-->'+items[i]['precio'];
a.setAttribute('data-nombre',items[i]['nombre']);
a.setAttribute('data-color',items[i]['color']);
a.setAttribute('data-precio',items[i]['precio']);
a.onclick = agregar_carrito;
document.body.appendChild(a);
document.body.appendChild(document.createElement('br'));
}
}
onload=setItems;
</script>
</head>
<body>
</body>
</html>