CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Problème getAttribute()

oga95
oga95
Niveau 10
17 septembre 2012 à 21:10:25

Salut tout le monde, encore moi :)

je viens vous demandez votre aide pour récupéré l'attribut d'un élément en JS.

Actuellement j'ai ceci:

$(function(){
$('.sticky').each(function(){
var dec = $(this).getAttribute('décalage');
alert(dec);
});
});

Qui doit allé chercher les infos dans:
<div class="sticky" décalage="25">[...]</div>

J'aimerais dans mon script récupérer cette valeur de l'attribut "décalage" mais rien n'y fait... :'(

:svp:

vava740
vava740
Niveau 10
17 septembre 2012 à 21:21:07

getAttribute c'est une méthode d'un objet HTMLElement.
$(this) c'est un objet qui provient de jQuery.

Soit tu fais this.getAttribute('décalage'), soit en utilisant jQuery $(this).attr('décalage');

Au passage, même si ça marche, c'est pas une bonne idée d'utiliser des accents dans un attribut.

Deuxième remarque, tu as l'air de faire du HTML, pas du XML, et "décalage" ne fait pas partie des attributs de la balise <div>. :ok:

Renseigne-toi sur l'attribut "data-" en HTML5. :-)

oga95
oga95
Niveau 10
17 septembre 2012 à 21:28:14

:ouch2: C'est magique le data- :fier:

plus besoin de ce demander comment stocker ces données

merci pour le coup de main ;)
je suis toujours autant perdu entre jquery et js

oga95
oga95
Niveau 10
18 septembre 2012 à 00:56:10

Encore, moi!

Je cherche comment faire pour réaliser une condition sur le fait qu'un élément suivant sa position (fixed ou absolut dans mon cas)

En gros :
Si mon élément est en position 'fixed' alors [...]

Mais je n'y arrive pas :'(

Tout ce que j'ai pu faire jusqu'à maintenant me renvois un "Uncaught ReferenceError:Invalid left-hand side in assignment"

vava740
vava740
Niveau 10
18 septembre 2012 à 08:16:04

Pour récupérer un style CSS avec jQuery:

var position = $('selector').css('position');

Sans jQuery:

var position = getComputedStyle(element).position;

// Element représente un élément HTML récupéré avec getElementBy Id,
// getElementsByTagName, querySelector, etc...

Meebo
Meebo
Niveau 9
18 septembre 2012 à 10:42:35

| Au passage, même si ça marche, c'est pas une bonne idée d'utiliser des accents dans un attribut.

Pourquoi ?

vava740
vava740
Niveau 10
18 septembre 2012 à 10:58:39

Plutôt par convention qu'autre chose, y'a peut-être que moi qui fait ça mais j'évite de mettre des accents ou caractères spéciaux dans les noms de dossiers, de fichiers, de fonctions, ou dans des balises et attributs par exemple.

Meebo
Meebo
Niveau 9
18 septembre 2012 à 11:09:49

Ouais moi pareil, mais je crois pas que ça pose vraiment de problèmes en pratique. :noel:

Davy_Graham
Davy_Graham
Niveau 4
18 septembre 2012 à 12:27:07

Disons que les accents c'est par convention, imagine si tu récupères un code où le nom des fonctions que tu dois appelé ont des signes allemands dedans.. Tu vas t'amuser.

Fire_Storm
Fire_Storm
Niveau 10
18 septembre 2012 à 12:39:18

Disons qu'a la base il me semble que certains langages sont basés sur l'ASCII 128, qui ne comprend donc pas les caractères accentués.

Sur un système ça peut fonctionner, sur un autre ça ne marchera pas.

Par défaut essayez de faire un petit programme en C avec des accents, logiquement ça ne marchera jamais sans bibliothèques supplémentaires.

Bref tu peux évidemment mettre des accents à ton texte etc, mais au niveau du code les caractères autorisés sont logiquement a-z, A-Z, 0-9, le _ et le - et c'est tout.

Donc les accents dans le code, franchement je te conseille d'oublier (ça ne merdera peut être pas sur ton PC, mais tu risques très fort d'avoir une couille un jour à cause de ça).

oga95
oga95
Niveau 10
27 septembre 2012 à 07:03:35

Encore moi, j'ai encore un problème avec ce sujet.

J'essais de vérifier avec une condition que le scroll de la page est supérieur à la position par rapport au top de l'élement + sa hauteur - une variable, sauf que... ça ne marche pas :(

Pour faire simple on va dire que le scroll doit être plus grand que 400 pour que la condition soit valide.

__________________________________________________
_

if (elem.hasClass('mouse_on_off')) {
if ($('window').scrollTop>400){
alert('Mouseover pret');
elem.mouseover(function(){
elem.stop().animate({top: "0px"}, Ton, 'easeOutBounce')
});
elem.mouseout(function(){
if($(window).scrollTop()>dDep2){
elem.stop().animate({top: "-" + dDep2 + "px"}, Toff, 'easeOutElastic')
};
});
};
};
__________________________________________________
_

Voila l'intégralité de mon code:

__________________________________________________
_

$(function(){
$('.sticky').each(function(){
var elem = $(this);
var parent = elem.parent();
var pTop = parent.offset().top;
var dTop = elem.offset().top;
var dDep = elem.data('sticky-depassement');
var hauteur = elem.height();

Ton = 400;
Toff = 300;

if ( dDep != null) {
var dDep2 = hauteur - dDep;
}else{
var dDep2 = -($('#top_menu').data('sticky-depassement'));
};

parent.css('position','relative');
elem.css('position','absolute');

$(window).scroll(function(){
if ($(window).scrollTop()>dTop + dDep2){
elem.css('position','fixed');
elem.css('top', -dDep2);
}else{
elem.css('position','absolute');
elem.stop().animate({top:dTop-parent.offset().
top},0);

};
});

if (elem.hasClass('mouse_on_off')) {
if ($('window').scrollTop>400){
alert('Mouseover fonctionne');
elem.mouseover(function(){
elem.stop().animate({top: "0px"}, Ton, 'easeOutBounce')
});
elem.mouseout(function(){
if($(window).scrollTop()>dDep2){
elem.stop().animate({top: "-" + dDep2 + "px"}, Toff, 'easeOutElastic')
};
});
};
};

});
});
__________________________________________________
_

(au passage, vous n'auriez pas un site pour poser son code facilement et en faire un lien? Sur JVC c'est vraiment pas pratique...)

Je vous remercie pour l'aide que vous voudrez bien m'apporter.

vava740
vava740
Niveau 10
27 septembre 2012 à 09:41:55

(au passage, vous n'auriez pas un site pour poser son code facilement et en faire un lien? Sur JVC c'est vraiment pas pratique...)

:d) http://wall.deblan.fr

Pour ton problème tu devrais faire des console.log() un peu partout pour débugger ton code (sans notre aide).

Ton problème vient visiblement de cette condition:

$(window).scrollTop > 400

Là t'as pas 36 000 choix, tu fais un log de la seule partie de la condition qui n'est pas fixe.

console.log($(window).scrollTop);

Et tu obtiens...

function (c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cy(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxMo
del&&g.document.documentElement[d]||g.document.bod
y[d]:e[d]}return
this.each(function(){g=cy(this),g?g.scrollTo(a?f(g
).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})
}

C'est donc une fonction. :noel:

Comment on utilise une fonction ?

Avec deux fucking parenthèses à la fin :noel:

Ta condition devient donc:

$(window).scrollTop() > 400

Tu mets ça dans ton if et le tour est joué :-)

oga95
oga95
Niveau 10
27 septembre 2012 à 11:48:57

:ouch2: Je suis de plus en plus mauvais :snif2:

J'avais avec la console fait tout un tas de test du scrollTop() sans jamais me mettre d'erreur :(

merci pour le coup de main et pour le site :)

oga95
oga95
Niveau 10
27 septembre 2012 à 12:00:44

Rha, il semblerait que le problème ne vienne pas de la.

Apres avoir suivi ton conseil et avoir mis du console.log() partout, je me rend compte que scrollTop() est à 0 même au milieu de la page...

console.log(dTop + hauteur -dDep);
console.log($(window).scrollTop());

me retourne 419 et 0.

Je réfléchi depuis tellement longtemps dessus que je vois pas plus loin que le bout de mon nez :(

Je continue bien évidement à chercher une solution mais toute aide est la bienvenue.

vava740
vava740
Niveau 10
27 septembre 2012 à 12:55:06

Essaie juste ce code sur ta page:

$(window).scroll(function() {
console.log($(window).scrollTop());
});

Ça te renvoie toujours 0 quand tu scroll ? :ouch2:

Parce que si je test ça sur JVC par exemple ça marche bien :noel:

Si ton site est en ligne je veux bien y jeter un coup d'oeil :oui:

oga95
oga95
Niveau 10
27 septembre 2012 à 14:51:11

Je comprends de moins en moins... il ne me renvois qu'une fois 0 maintenant...

Tiens pour le site:
http://loz.netii.net/27-09-2012_14h48/

vava740
vava740
Niveau 10
27 septembre 2012 à 15:21:26

Des deux console.log sont pas dans l'évènement scroll, ils sont exécutés juste au chargement de la page, donc normal que ce soit zéro, vu qu'on "spawn" en haut de la page :noel:

Il faudrait mettre la partie du "if (elem.hasClass('mouse_on_off')) {" dans le "$(window).scroll(function(){", non?

oga95
oga95
Niveau 10
27 septembre 2012 à 16:56:49

Que ce que je suis ***... En plus c'est bien ce que j'avais sur mes versions précédentes x[)

La vérification par rapport au scroll ne me plait pas finalement...

Je voudrais que la condition resemble à ça:
elem.css('position') = 'fixed'

Es possible? (Celui-ci me renvoi une erreur)

vava740
vava740
Niveau 10
27 septembre 2012 à 17:22:16

Revois un peu tes bases, pour vérifier si deux valeurs sont égales on utilise l'opérateur == et non un simple = (qui lui sert à l'affectation).

:d) if(elem.css('position') == 'fixed')

oga95
oga95
Niveau 10
27 septembre 2012 à 18:06:05

Comme dans tout les langages... Stupidité sur stupidité :(

Je pensais que l'erreur venait du fait que .css() s'utilise avec deux arguments.

Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment