Source code
Remplace getElementById()

//recherche l'élément ciblé autour de l'élément d'où est lancée l'action
//permet de cibler correctement des id non-uniques
function getbyid(id,tg){//où tg est l'objet this
if(tg!=undefined){var pa=tg.parentNode//dont on prend le parent
    
if(pa==undefined)return getbyid(id); //sinon on fait un getid normal
    
else if(pa.id==id)return pa//vérifie si le parent est l'id recherché
    
else{var pc=pa.childNodes//et tous ses nœuds enfants
        //contrairement getElementById, on s'arrête au premier élément trouvé
        
for(i=0;i<pc.length;i++)if(pc[i].id==id && !res)return pc[i];}
    
//si l'élément n'est pas trouvé, itération au nœud parent
    
return getbyid(id,pa);}
return 
document.getElementById(id);}

0.01525