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){var res=''//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){res=pa;} //vérifie si le parent est l'id recherché
    
else{var pc=pa.childNodes//et tous ses nœuds enfants
        //contrairement getid, on s'arrête au premier élément trouvé
        
for(i=0;i<pc.length;i++)if(pc[i].id==id && !res)res=pc[i];}
    
//si l'élément n'est pas trouvé, itération au nœud parent
    
if(res)return res; else return getbyid(id,pa);}
return 
document.getElementById(id);}

0.03939