problème avec split pour syntaxe sur un operateur ternaire

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : problème avec split pour syntaxe sur un operateur ternaire

par BeRoots » 08 mai 2008, 18:26

oki... j'ai fini par comprendre :)

en fait mon Tips de mootools pour les bulle efface les attribut title de mes liens donc ma var title devient null et donc mon lightbox ne peut exploiter les titles en questions...

je n'ai pas trouver de moyen de faire en sorte de ne pas supprimer les titles car en fait mootools les supprime pour ne pas avoir et les bulles navigateur et ces propres bulles à l'affichage. logique :roll:

je vait voir pour mettre mes title en attribut name plutot que de les effacer...

sinon pour ce qui est de l'opérateur ternaire, la syntaxe etait au top ;)

par BeRoots » 07 mai 2008, 14:38

en gros j'utilise les tips de mootools pour faire de la bulle...
en parallèle j'utilise un lightbox qui me titre l'image via title...

en gros l'objectif est simple...
J'ai ceci au depart dans mon html au cas ou JS est désactivé:
<a href="./path/file.jpg" title="Menu navigation :: Mode plein &eacute;cran">&nbsp;</a>
au domready, si JS activé, je remplace ce title par celui-ci afin de ne pas voir la partie issue de db dans la bulle:
<a href="./path/file.jpg" title="Menu navigation :: Mode plein &eacute;cran<span style='display:none;'>BRTSici la chaine à retourner
 via le splitBRTS</span>">&nbsp;</a>
par contre lorsque l'on appel le lightbox, on doit avoir uniquement la partie qui concerne le titre pour l'image cible sans les infos pour la bubble à mootools. c'est donc dans le JS de mon lightbox que je souhaite modifier la façon qu'il récupère le title via mon opérateur ternaire.
Donc ceci:
var o = {
            el:         link,
            title:      (link.getAttribute('title').search(/BRTS/) != -1) ? link.getAttribute('title') : link.getAttribute('title'),
            type:       getPlayerType(href),
            options:    apply({}, opts || {}), // break the reference
            content:    href
        };
Le code par default pour le lightbox est le même sans le ternaire:
var o = {
            el:         link,
            title:      link.getAttribute('title'),
            type:       getPlayerType(href),
            options:    apply({}, opts || {}), // break the reference
            content:    href
        };
j'ai essayer Les alert();
alert(link) => url du lien utiliser pour lightbox
alert(link.getAttribute('title')) => null

Pas moyen de savoir pourquoi mais cela fonctionne via le JS par default mais pas avec le ternaire car ça condition echoue vu que link.getAttribute('title'); renvoi null...

merci d'avance :)

par Ryle » 07 mai 2008, 13:54

et euh.... que donne un :

Code : Tout sélectionner

alert(link); alert(link.getAttribute('title'));
Euh... sinon à priori, je dirais que c'est parce que ton code html il est tout cracra... si ton title doit effectivement contenir toute cette vilaine chaine qui s'affichera lorsque l'utilisateur passera sa souris sur ton espace, alors il faut l'htmlentitieser ou au moins remplacer les < > au profit de < >

par BeRoots » 07 mai 2008, 12:30

j'ai bien essayer mais rien de mieux et mon title renvoi toujour:
link.getAttribute("title") has no properties

par Ryle » 07 mai 2008, 11:24

Et avec des parenthèses autour de ton ternaire pour que javascript ne s'intérroge pas sur les ":" qu'il va trouver en plein milieu de l'instruction, alors qu'il pensait les avoir déjà trouvé après "title:"

Code : Tout sélectionner

title: ( (link.getAttribute('title').search(/BRTS/) != -1) ? link.getAttribute('title').match("BRTS(.*)BRTS") : link.getAttribute('title') ),

par BeRoots » 07 mai 2008, 11:06

en fait mon ternaire fonctionne pas on dirai :?

en gros j'ai essayé ceci mais rien n'est affecter à title:
var o = {
            el:         link,
            title:      (link.getAttribute('title').search(/BRTS/) != -1) ? link.getAttribute('title') : link.getAttribute('title'),
            type:       getPlayerType(href),
            options:    apply({}, opts || {}), // break the reference
            content:    href
        };
c'est donc un mystère...
une idée peu être? :)

par Truc » 07 mai 2008, 11:00

PS:
Et sinon pourquoi ne pas utiliser un masque qui te récupère directement ce qu'il y a entre BRTS style
search(/BRTS(.*)BRTS/) 
c'est plutôt match() dans ce cas car search() revoit la position de l'occurence sur chaine ;)
Ha oui trop pressé... :)
et donc pourquoi pas ?

affiche déjà le résultat retourné par l'opérateur ternaire

par BeRoots » 07 mai 2008, 10:46

une affectation avec ":" et une fin d'instruction avec "," :-k
J'ai allégé à l'extrême mais un peu trop peut être :?
voici ce que j'ai essayé mais mon title reste toujour indefinit :-k
        var o = {
            el:         link,
            title:      (link.getAttribute('title').search(/BRTS/) != -1) ? link.getAttribute('title').match("BRTS(.*)BRTS") : link.getAttribute('title'),
            type:       getPlayerType(href),
            options:    apply({}, opts || {}), // break the reference
            content:    href
        };

si quelqu'un à une idée ;)

PS:
Et sinon pourquoi ne pas utiliser un masque qui te récupère directement ce qu'il y a entre BRTS style
search(/BRTS(.*)BRTS/) 
c'est plutôt match() dans ce cas car search() revoit la position de l'occurence sur chaine ;)

par Truc » 07 mai 2008, 09:04

manque peut être des bouts de code (début, fin) non ?

une affectation avec ":" et une fin d'instruction avec "," :-k

Et sinon pourquoi ne pas utiliser un masque qui te récupère directement ce qu'il y a entre BRTS style
search(/BRTS(.*)BRTS/)

problème avec split pour syntaxe sur un operateur ternaire

par BeRoots » 06 mai 2008, 23:17

salut tout le monde :)

j'ai un soucis sur un travail sur chaine via split()...
je fait ceci via un opérateur ternaire afin de détecter si présence de "BRTS" dans une chaine. Si c'est le cas, on doit splité la chaine et en extraire la partie entre les caractère "BRTS" :-k
voici la chaine réel en html:
<a href="./path/file.jpg" title="Menu navigation :: Mode plein &eacute;cran<span style='display:none;'>BRTSici la chaine à retourner
 via le splitBRTS</span>">&nbsp;</a>
voici l'operateur ternaire en JS:
title: (link.getAttribute('title').search(/BRTS/) != -1) ? link.getAttribute('title').split("BRTS")[1] : link.getAttribute('title'),
mon soucis est que ma var title est vide lorsque "BRTS" est detecté :?
Si quelqu'un a une idée ;)
Merci d'avance.