Récemment, j'ai joué avec du code javascript pour remplacer un élément une fois sur lequel on a cliqué 3 fois et mon problème est que je ne peux pas faire remplacer le paramètre data-id-slot- "" ainsi que. Pour cet élément ins . Tout ce que j'ai réussi est de remplacer le innerText une fois cliqué 3 fois.
function replaceAfter3Clicks(elem, newElem) {
let count = 0;
let callback = function() {
count++;
if (count >= 3) {
elem.replaceWith(newElem);
}
}
ins1.click(callback);
}
const ins1 = $("ins[data-ad-slot]");
// pre-made second ins for future replacement
const ins2 = document.createElement('ins');
ins2.?? = '9020596432';
ins2.innerText = 'ins2';
replaceAfter3Clicks(ins1, ins2);
3 Réponses :
Je pense que vous êtes confus par la différence entre un attribut HTML et une propriété d'objet javascript
ins2.setAttribute("data-id-slot", "9020596432")
Je pense ici que vous voulez quelque chose de plus comme ça
ins2.?? = '9020596432';
Vous parlez de l ' attribut de l'élément. Vous pouvez définir l'attribut d'un élément avec le setAttribute a > méthode d'un élément. const ins2 = document.createElement('ins');
ins2.setAttribute('data-ad-slot', '9020596432');
ins2.innerText = 'ins2';
Puisqu'il s'agit d'un data- attribut , vous pouvez y accéder en utilisant le Propriété dataset .
ins2.dataset.adSlot = '9020596432';
// vs
ins2.setAttribute('data-ad-slot', '9020596432');
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <ins data-ad-slot="">Placeholder</ins>
Comme les autres réponses l'ont suggéré, vous pouvez également utiliser setAttribute , mais dataset est plus court, et à mon avis plus propre.
function replaceAfter3Clicks(elem, newElem) {
let count = 0;
let callback = function() {
count++;
if (count >= 3) {
elem.replaceWith(newElem);
}
};
ins1.click(callback);
}
const ins1 = $("ins[data-ad-slot]");
// pre-made second ins for future replacement
const ins2 = document.createElement('ins');
ins2.dataset.adSlot = '9020596432';
ins2.innerText = 'ins2';
replaceAfter3Clicks(ins1, ins2);