Uf, hay varias cosas/conceptos que deberías repasar.
Por ejemplo, si usás atributos personalizados, más vale usar html5 y data y dataset:
http://ejohn.org/blog/html-5-data-attributes/ http://www.javascriptkit.com/dhtmltu...tributes.shtml
Otra cosa, en algunos navegadores esto no funcionará:
Código PHP:
<script type="application/javascript" language="javascript">
el atributo language es obsoleto y no debe usarse
Deberías usar esto:
Código PHP:
<script type="text/javascript">
Otra cosa, si querés usar encadenamiento (chaining), en lugar de esto:
Código PHP:
function $(id) { document.getElementById(id);}
deberías usar esto:
Código PHP:
function $(id) {return document.getElementById(id);}
Y, finalmente, un ejemplo de lo que imagino que querés hacer:
Código PHP:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<script type="text/javascript">
function $(n){return document.getElementById(n);}
function setCustomAttribute(a,v,el){
el.setAttribute(a,v);
//si querés seguir encadenando, deberías retornar aquí el mismo objeto al que le estás añadiendo el atributo, es decir, deberías añadir un: return el;
}
function test(){
alert(this.getAttribute('data-algo'));
// o, en navegadores modernos: alert(this.dataset.algo);
}
function hacer(){
setCustomAttribute('data-algo','boo',$('pp'));
$('pp')['onclick']=test;
}
onload=hacer;
</script>
</head>
<body>
<div id="pp">click</div>
</body>
</html>
Edito se me adelantó el amigo zerokilled