Votre code est correct. Peut-être que votre problème est que vous ne passez pas d'ID à la fonction AddBorder
, ou qu'un élément avec cet ID n'existe pas. Ou vous pourriez exécuter votre fonction avant que l'élément en question soit accessible via le DOM du navigateur.
Depuis ECMAScript 2015, vous pouvez également utiliser les littéraux de gabarits (aussi appelés chaînes de gabarits):
document.getElementById(`horseThumb_${id}`).className = "hand positionLeft";
Pour identifier le premier cas ou déterminer la cause du deuxième cas, ajoutez ceci comme premières lignes à l'intérieur de la fonction:
alert('Numéro ID : ' + id);
alert('Valeur de retour de gEBI : ' + document.getElementById('horseThumb_' + id));
Cela ouvrira des fenêtres contextuelles à chaque fois que la fonction est appelée, avec la valeur de id
et la valeur de retour de document.getElementById
. Si vous obtenez undefined
pour la fenêtre contextuelle du numéro ID, vous ne passez pas d'argument à la fonction. Si l'ID n'existe pas, vous obtiendriez votre numéro ID (incorrect ?) dans la première fenêtre contextuelle mais obtiendriez null
dans la seconde.
Le troisième cas se produirait si votre page Web ressemble à ceci, en essayant d'exécuter AddBorder
alors que la page est encore en cours de chargement:
Ma page Web
function AddBorder(id) {
...
}
AddBorder(42); // Ne fonctionnera pas; la page n'est pas complètement chargée!
Pour résoudre ce problème, mettez tout le code qui utilise AddBorder à l'intérieur d'un gestionnaire d'événements onload
:
// On ne peut en avoir qu'un par page
window.onload = function() {
...
AddBorder(42);
...
}
// Ou on peut en avoir autant que nécessaire sur une page
function doWhatever() {
...
AddBorder(42);
...
}
if(window.addEventListener) window.addEventListener('load', doWhatever, false);
else window.attachEvent('onload', doWhatever);