11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour à tous?
J'aurai voulu savoir s'il était possible avec Javascript de remplacer des balises, par exemple, des balises <fieldset> avec des <div> au chargement d'un page ?

Merci par avance pour vos réponses
Administrateur
Bonjour et bienvenue,

oui ce genre de chose est faisable en JS (tu peux tout modifier en JS) mais pourquoi ne pas modifier à la base le code HTML ?
L'élément fieldset a un intérêt et si tu l'enlèves ...
Si c'est parce que les non-voyants ont l'utilité de fieldset mais que c'est moche pour les autres alors tu t'es dit "autant l'enlever une fois la page chargée" alors non ça ira pas parce que les non-voyants surfent beaucoup AVEC Javascript activé. Mais j'arrive pas à imaginer pourquoi tu veux faire ça donc je suis sûrement à côté de la plaque Smiley smile
Merci pour la réponse.
En fait je n'ai pas la main sur le code, par contre je peux attacher une fonction JS au chargement de ma page.
J'ai bien conscience de l'importance des fieldset, notamment en terme d'accessibilité.
Cependant, la raison pour laquelle je souhaite remplacer mes fieldset par des div c'est que mes fieldset ne s'impriment pas correctement sous Firefox. Lorsque la longueur de mon formulaire contenu dans le fieldset dépasse la longueur d'une page au format A4, le fieldset est tronqué...

Voila ,'explication...
Si tu as une solution JS, je viens bien que tu me la donnes Smiley smile , j'ai testé pas mal de choses, notamment avec Jquery, mais en vain....


Merci
pinkbubble a écrit :
mes fieldset ne s'impriment pas correctement sous Firefox

Ce qui vient probablement des styles CSS appliqués à ces éléments. Suspects habituels: utilisation de height (passer en height:auto), de overflow (overflow:visible pour l'impression).

C'est à priori un peu tôt pour sauter sur la solution de dernier recours, à savoir une rustine en JavaScript.
Merci Florent, mais déjà testé ta solution... et bien d'autres encore.
Je me tourne vers Javascript car je ne trouve pas d'autres solutions.

Donc si quelqu'un sait comment on remplace des balises en Javascript, vous me sauvez la vie !
J'ai essayé avec Jquery avec les fonctions replaceWith, mais il ne conserve pas le code HTML contenu dans mes fieldset.

Merci
Tu récupères en JS le contenu du FIELDSET, que tu stockes dans une variable. Tu remplaces le FIELDSET par un DIV. Tu replace le contenu sauvegardé comme contenu du DIV.

Ça doit se gérer uniquement avec l'API DOM native de JavaScript, sinon avec une bibliothèque JS telle que jQuery ça se gère sans doute bien.

(Je continue à penser que ce problème est singulier. Tu as réalisé un test sans le moindre style CSS, pour vérifier si le problème est propre à l'élément FIELDSET ou bien lié aux CSS appliqués?)
Je suis totalement d'accord avec toi Florent sur la théorie, et je t'assure j'ai tout testé, avec CSS, sans CSS, bref. D'ailleurs, d'après mes recherches, ce problème des fieldset est connu, mais à part les remplacer à la main par des DIV, aucune autre solution n'est proposée...
La bibliothèque que j'utilise est Jquery, et voici le code que je n'arrive pas a faire marcher comme je souhaite :



$(document).ready(function(){
      $("fieldset").each(function(i) {
            var fieldsetContent = $(this).html();
            $(this).replaceWith("<div class='fieldset'>" + fieldsetContent + "</div>");
	
	})
 });




Merci
Modifié par pinkbubble (04 Nov 2009 - 09:41)