1
votes

Besoin d'aide pour remplacer un paramètre spécifique pour l'élément

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


0 commentaires

3 Réponses :


0
votes

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


0 commentaires

0
votes

0 commentaires

0
votes

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


0 commentaires