erreur js

WRInaute discret
Bonjour,

J'ai un site internet créé avec Wordpress dans lequel j'ai intégrer un code js pour établir un positionnement de boutons par rapport au scroll. Voici le code:

Code:
var $j = jQuery.noConflict();

$j(document).ready(function() {
	"use strict";

	// bouton prec./suiv. présentation
$j(document).ready(function(){
// ici on positionne les boutons juste après le header +55
	$j(".gauche,.droite").css({"top":$j(".title").offset().top+$j(".title").height()+55,"display":"block"});

 
  $j(window).scroll(function(){
 		var fenetre=$j(this), 
    scrollTop=fenetre.scrollTop(),
    scrollBottom=parseInt($j(document).height() - 
    fenetre.height() -scrollTop),
 		cible=$j(".cible"),
    entete=$j(".title"),
    //set le Top selon le scroll de window  
 		Top=scrollTop+entete.height()+235<cible.offset().top
 			? entete.offset().top+entete.height()+55
      : cible.offset().top-fenetre.scrollTop()-180;//ici les boutons s'arrêtent a 50px du top de notre div cible
 
  $j(".gauche,.droite").css('top',Top);
  
  // si le debut de la page
  if(scrollTop==0){
  console.log("debut de page");
  }
  
  //si la fin de la page
  if(scrollBottom==0){
  console.log("fin de page");
  }
        
        
  });
  
});

});

Mon problème est que je rencontre une erreur à la ligne:
Code:
$j(".gauche,.droite").css({"top":$j(".title").offset().top+$j(".title").height()+55,"display":"block"});

Voici le message que Chrome me dit: "Uncaught TypeError cannot read property 'top'' of undefined"

Peut-on me dire ce qu'il ne va pas dans ce code afin de m'aider à coder autrement ? Car je ne trouve pas la solution ...

Merci à vous ! ;)
 
WRInaute discret
Bonjour,

Merci pour votre réponse !

Je viens peut-être de comprendre une chose que je n'ai pas dis dans mon 1er message (pensant que ce n'était pas important),

Mon site est fait avec Worpress avec un thème qui utilise Ajax pour faire une transition de page en fondu. Et quand je désactive la transition de page, je n'ai plus ce message d'erreur ! Il trouve bien l'élément .title !
Du coup je pense avoir trouvé la cause, pensez-vous que c'est possible qu'il ne trouve pas l'élément .title à cause d'ajax et de la transition de page ?
Que dois-je modifier dans mon code ?
 
WRInaute accro
Oui c'est possible, il faut donc lire cette valeur après que la transition soit faite, c-a-d qd .title est présent.
 
WRInaute discret
J'ai essayé ce code dans le fichier function.php :

Code:
if(!function_exists('btn_pres_enqueue_scripts')) {
	function btn_pres_enqueue_scripts() {
		$js_directory = get_template_directory_uri() . 'my_js/';
		wp_register_script( 'navigation_pres', $js_directory . 'navigation_pres.js', 'jquery', '1.0' );
		wp_enqueue_script( 'navigation_pres' );
	}
add_action( 'wp_enqueue_scripts', 'btn_pres_enqueue_scripts' );
}

et mis mon code JS (celui du 1er message) dans un fichier nommé "navigation_pres.js" mais maintenant j'ai une erreur dans ce fichier. Chrome me marque "uncaught SyntaxError: missing ) after argument list", donc je pense comprendre qu'il me manque une parenthèse mais je ne vois pas où !

Pouvez-vous m'aider ?
 
WRInaute discret
C'est encore moi :D

J'ai trouvé ce qu'il manquait au code mais ça na pas résolu l'erreur ""Uncaught TypeError cannot read property 'top'' of undefined"

Là je ne sais plus quoi faire, ça sort de mes compétences ... Du coup le code même chargé après ceux du thème, ça ne fonctionne pas non plus.

Si on peut m'aider à transformer mon code :)

Merci !
 
WRInaute discret
Petite info que je viens de voir (si ça peut aider), quand je charge la page une première fois, j'ai le message d'erreur. Et quand j'actualise la page, je n'ai plus l'erreur ! Sans doute parce que c'est dans le cache, non ?
 
WRInaute discret
Salut spout, entre temps j'ai cherché sur google et je crois avoir résolu mon problème à l'aide de ce lien (si ça peut aider des gens dans le même cas): http://stackoverflow.com/questions/20175094/uncaught-typeerror-cannot-read-property-top-of-undefined

Ce qui donne:

Code:
var $j = jQuery.noConflict();

$j(document).ready(function() {
   "use strict";
   
// bouton prec./suiv. présentation
$j(document).ready(function(){
// ici on positionne les boutons juste après le header +55
	var btn_presentation = $j(".gauche,.droite");
	if (btn_presentation.length) {
		btn_presentation.css({"top":$j(".title").offset().top+$j(".title").height()+55,"display":"block"});

 
  $j(window).scroll(function(){
 		var fenetre=$j(this), 
    scrollTop=fenetre.scrollTop(),
    scrollBottom=parseInt($j(document).height() - 
    fenetre.height() -scrollTop),
 		cible=$j(".cible"),
    entete=$j(".title"),
    //set le Top selon le scroll de window  
 		Top=scrollTop+entete.height()+235<cible.offset().top
 			? entete.offset().top+entete.height()+55
      : cible.offset().top-fenetre.scrollTop()-180;//ici les boutons s'arrêtent a 50px du top de notre div cible
 
  $j(".gauche,.droite").css('top',Top);
  
  // si le debut de la page
  if(scrollTop==0){
  console.log("debut de page");
  }
  
  //si la fin de la page
  if(scrollBottom==0){
  console.log("fin de page");
  }
        
        
  });
  };
});
});

Parcontre j'ai un
Code:
$j(document).ready(function()
dans un autre, c'est pas gênant ?
 
WRInaute discret
Et zut, j'ai le même problème avec la ligne suivante:

Code:
Top=scrollTop+entete.height()+235<cible.offset().top

Et je n'arrive pas à refaire comme j'ai fais avant, la situation n'est pas tout à fait la même :? , Peux-tu m'aider à corriger cette ligne à l'aide du lien que j'ai partagé plus haut ?
 
WRInaute discret
Désoler je pensais qu'il y en avait pas besoin vu que j'avais trouvé la solution avant que je vois la demande de l'URL :oops:
C'était juste pour réinterpréter le code trouvé que je demandais de l'aide.

Pour voir le problème faut aller d'abord la puis là par exemple [liens supprimés à la demande de l'auteur], et vous devriez normalement avoir l'erreur. (j'ai mis 2 lien car pour voir l'erreur, faut d'abord charger les boutons qui correspondent au code et ensuite aller sur une autre page)
 
WRInaute discret
Bonjour

Oui je sais qu'il y a besoin de javascript pour mon site, mais c'est un choix :wink:

Avez-vous l'erreur de votre coté? Avez-vous la solution ? :)

Merci
 
Membre Honoré
Bonjour,

Naviguant uniquement sans JS, pas pu vérifier. :)
Un développeur prendra peut-être le temps de debug.

Cordialement.
 
WRInaute accro
Oui

Jy3auhZ.png
 
WRInaute discret
Peut-on me dire ce qu'il ne va pas dans ce code svp ?
J'ai un "uncaught SyntaxError: Unexpected token if" et je ne vois pas le problème ! :?

Code:
var $j = jQuery.noConflict();

$j(document).ready(function() {
   "use strict";
   
// bouton prec./suiv. présentation
$j(document).ready(function(){
// ici on positionne les boutons juste après le header +55
	var btn_presentation = $j(".gauche,.droite");
	if (btn_presentation.length) {
		btn_presentation.css({"top":$j(".title").offset().top+$j(".title").height()+55,"display":"block"});

 
  $j(window).scroll(function(){
 		var fenetre=$j(this), 
    scrollTop=fenetre.scrollTop(),
    scrollBottom=parseInt($j(document).height() - fenetre.height() -scrollTop),
 	cible=$j(".cible"),
    entete=$j(".title"),
	if (cible.length) {
    //set le Top selon le scroll de window  
 	Top=scrollTop+entete.height()+235<cible.offset().top
	? entete.offset().top+entete.height()+55
	: cible.offset().top-fenetre.scrollTop()-180;//ici les boutons s'arrêtent a 50px du top de notre div cible
 
  $j(".gauche,.droite").css('top',Top);
  
  // si le debut de la page
  if(scrollTop==0){
  console.log("debut de page");
  }
  
  //si la fin de la page
  if(scrollBottom==0){
  console.log("fin de page");
  }
        
    };    
  });
  };
});
});
 
WRInaute discret
Bonjour,

J'ai cherché comment utilisé moins de js mais je ne trouve pas comment, ou ne comprend pas comment faire. Peut-être serait-ce plus sympa de me donner une base de ce que je dois faire ?

Et en ce qui concerne mon code j'aimerai quand même que l'on m'aide à résoudre le problème, car depuis mon 1er message je trouve ne pas avoir eu beaucoup d'aide... :( J'ai l'impression d'être le seul à chercher la solution ...
 
Membre Honoré
Bonjour,
arnlig3550 a dit:
Peut-être serait-ce plus sympa de me donner une base de ce que je dois faire ?
Vérifier les différentes erreurs du code actuel, utiliser Google avec les mots-clés indiqués pour différentes possibilités ou utiliser le moteur du forum pour avoir par exemple des scripts de certains sujets similaires. Une autre solution est d'attendre qu'un développeur vous propose un code tout fait (si quelqu'un a du temps et de la motivation).

Cordialement.
 
WRInaute discret
J'ai déjà fait tout ça, la preuve est ci-dessous:

arnlig3550 a dit:
Salut spout, entre temps j'ai cherché sur google et je crois avoir résolu mon problème à l'aide de ce lien (si ça peut aider des gens dans le même cas): http://stackoverflow.com/questions/20175094/uncaught-typeerror-cannot-read-property-top-of-undefined

Mais je n'ai pas plus d'aide même en ayant trouvé une partie de la solution. Mon code est déjà tout fait donc pas besoin de le refaire, je veux juste réparer l'erreur.
 
Membre Honoré
Bonjour,

Le code d'origine via le forum de développeurs fonctionne, ce sont les modifications qui ne vont pas.
Vous pouvez simplement reprendre le code d'origine de l'autre sujet du forum pour le corriger.

Il aurait été mieux d'indiquer l'origine du code dès le début au développeur.
Vous pouvez ajouter l'URL au sujet si vous le souhaitez.


Cordialement.
 
Discussions similaires
Haut