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);