Comment faire pour supprimer des données* les attributs à l'aide de HTML5 dataset
Selon le jeu de données spec, comment est de l'élément.dataset visant à supprimer les données d'attributs? Considérer:
<p id="example" data-a="string a" data-b="string b"></p>
Si vous faites cela:
var elem = document.querySelector('#example');
elem.dataset.a = null;
elem.dataset.b = undefined;
elem.dataset.c = false;
elem.dataset.d = 3;
elem.dataset.e = [1, 2, 3];
elem.dataset.f = {prop: 'value'};
elem.dataset.g = JSON.stringify({prop: 'value'});
les DOM devient présent dans Chrome et Firefox:
<p id="example"
data-a="null"
data-b="undefined"
data-c="false"
data-d="3"
data-e="1,2,3"
data.f="[object Object]"
data.g="{"prop":"value"}"
></p>
Le Chrome/Firefox mise en œuvre imite setAttribute. Il s'applique essentiellement .toString()
premier. Cela fait sens pour moi, sauf pour le traitement de null
parce que je m'attends à ce que null
serait de supprimer l'attribut. Sinon, comment fonctionne le jeu de données de l'API ne soit l'équivalent de:
elem.removeAttribute('data-a');
Et ce sur les attributs booléens:
<p data-something>
est équivalent à <p data-something="">
Hmm.
Vous devez vous connecter pour publier un commentaire.
Ne serait pas "supprimer" supprimer dataset élément? E. g.:
delete elem.dataset.foo
fonctionne!delete v.dataset.foo;
ne fonctionnera pas dans Safari. Un navigateur croix solution serait;v.removeAttribute('data-foo')
v.dataset.foo = 'bar'
) puisremoveAttribute
n'a pas le même effet quedelete v.dataset.foo
— il ne supprime pas la propriété de datasetC'est de supprimer toutes les données* les attributs. Vous pouvez ajouter une condition dans la boucle pour ne supprimer que les données particulières-attribut. Espérons que cela aide 🙂