IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

[DOM] Les nodes dans le modèle DOM


Sujet :

JavaScript

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 9
    Points : 5
    Points
    5
    Par défaut [DOM] Les nodes dans le modèle DOM
    Bonjour 8) ,
    j'ai un problème avec les nodes,
    je voudrais implanter les attributs cellspacing et cellpadding dans toute les balises <table> de ma page et leurs donner la valeur 0.
    Les solutions CSS n'étant pas aprouvée par le w3 et dépendant des différents navigateurs, je voudrais le faire avec les nodes.
    Voilà ce que j'ai fais mais sans succès:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    window.document.getElementsByTagName("table")[1].setAttributeNode("cellspacing").setAttribute("0");
    window.document.getElementsByTagName("table")[1].setAttributeNode("cellpadding").setAttribute("0");
    Le [1] est volontaire ne sachant pas comment on fais pour sélectionner tous les <table>.Il n'y a pas de retour chariot en milieu de code.

    Si quelqu'un avait la bonté de m'expliqué ce qui cloche je lui serait très reconnaissant (il se peut que ce ne soit pas du tout comme ça que ça fonctionne : )

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for (i=0;i<document.getElementsByTagName("table").lenght;i++){
    document.getElementsByTagName("table")[i].setAttribute("cellpadding","0")
    document.getElementsByTagName("table")[i].setAttribute("cellspacing","0")
    }

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 9
    Points : 5
    Points
    5
    Par défaut je comprend pas!
    Merci de me préter attention
    La solution me parait bonne, en tout cas pour faire varier le i mais ça ne marche pas je doit me tromper autre part.

    Normalement (je croit), il suffit de mettre le srcipt dans le <head>. Il n'y a pas besoin de le mettre dans une fonction : le for marche seul ou il faut toujours tout appeler avec une fonction et un onAction="ma fonction()" :

    Je doit avouer que je suis un peut embrouillé j'ai pourtant lu pas mal de tutoriaux

  4. #4
    Membre éprouvé
    Avatar de Celelibi
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 087
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 087
    Points : 1 122
    Points
    1 122
    Par défaut
    Le fait de mettre le script dans le <head> va faire qu'il sera exécuté avant la fin du chargement de la page, donc à ce moment là tes balises <table> ne seront pas encore chargée. Mieux appeller la fonction sur l'évènenement onload.

    ceci dit le pense que tu devrais normalement pouvoir simplement remplacer ces scripts par ces quelques lignes de css qui je pense marchent aussi avec IE :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    table {
      border-spacing: 0px;
    }
    table, table td {
      padding: 0px;
    }
    Si ce code ne marche pas avec IE rien ne t'empêche de rajouter les styles qui marche pour ce navigateur en plus. Chaque navigateur n'interprête que les règles styles qu'il connais.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 9
    Points : 5
    Points
    5
    Par défaut la solution node existe-elle?
    Je vous remercie déjà de vos réponses .
    La solution du css fonctionne pour sûr, seulement j'aurait bien voulu y arriver avec les nodes juste pour voir si ça marche.
    Voilà mon code actuel (qui est un test préalable à ma page finale):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    <html> 
     
    <head>
    <title>test</title>
    <script type="text/JavaScript">
    function cell() {
    for (i=0;i<document.getElementsByTagName("table").lenght;i++){ 
    document.getElementsByTagName("table")[i].setAttribute("cellpadding","0") 
    document.getElementsByTagName("table")[i].setAttribute("cellspacing","0") 
    } 
    }
    </script>         
    </head>
     
    <body onLoad="cell()">
    <table style="background:#ff0000;">
    <tr><td style="background:#00ff00;">
    <a href="javascript:cell()">changer les propriétés du tableau</a>
    </td><td style="background:#00ff00;">
    <p>blabla</p>
    </td></tr>
    </table>
    </body>
     
    </html>
    Le code est fait pour qu'on voit la fusion de manière évidente avec les couleurs de fonds.
    J'ai fait deux appel de la même fonction et bien sûr sans résultat.
    Si quelqu'un peut trouver ce qui ne va pas se serait cool 8) .
    Je suis sur IE. Merci pour vos future réponse.

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 9
    Points : 5
    Points
    5
    Par défaut résolu, plus ou moins!
    Le problème est résolu 8) d'une autre façon qu'avec les nodes ou le ccs vaseux qui tourne autour de cette propriété et qui dépend des navigateurs.


    La solution est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for (i=0;i<document.getElementsByTagName("table").length;i++) { 
    document.getElementsByTagName("table")[i].cellSpacing="0"; 
    document.getElementsByTagName("table")[i].cellPadding="0"; 
    }
    Merci à vous et à eux

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Les vues dans le modèle relationnel objet
    Par r_thelord dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 10/12/2010, 19h01
  2. Problème avec les relations dans mon modèle
    Par wam35 dans le forum Schéma
    Réponses: 3
    Dernier message: 21/01/2008, 20h22
  3. [DOM] Générer dans un document DOM les espaces de nom + schemaLocation
    Par be_tnt dans le forum Format d'échange (XML, JSON...)
    Réponses: 4
    Dernier message: 09/10/2006, 13h28
  4. [XML][DOM] ecriture Element dans .xml
    Par sebastien2222 dans le forum XML/XSL et SOAP
    Réponses: 4
    Dernier message: 03/05/2006, 14h10
  5. [DOM] DOM avec <table> dans <div>
    Par mavvv dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 09/02/2006, 15h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo