Rechercher : dans
Par :

[Javascript] Fonction de tronquage

Dernière réponse le 2 jui 2009 à 17:13:57 Arkha, le 2 jui 2009 à 11:50:02 
 Signaler ce message aux modérateurs

Bonjour,
j'ai créé une fonction de tronquage par des "..." pour que le texte affiché ne soit pas trop volumineux

le script:

if (val.length > 7) {
   val = val.substr(0,7)+"...";
}
document.getElementById('id').innerHTML = val;

//si la valeur de val est "aaaaaaaaaaaaaaaaaaa" elle sera remplacée par "aaaaaaa..."


Jusque là tout vas bien, mais le problème est que j'aimerai que cette fonction, prenne en compte les balises HTML de cette façon:
exemple:


"123<strong>4567</strong>89" deviendra "1234567..."


au lieu de :


"123<str..."


Avez vous une idée pour m'éclairer?

Merci d'avance.
Configuration: Windows XP Internet Explorer 7.0

Meilleures réponses pour « [Javascript] Fonction de tronquage » dans :
Javascript - Manipulation des contrôles clavier VoirManipulation des contrôles clavier Cette astuce a pour but de vous faire découvrir la (ou du moins une) manière de contrôler les évènements clavier en javascript. Cela vous permettra de contrôler/attribuer les/des comportements particuliers à...
Trier un tableau sans utiliser la fonction sort VoirTrier un tableau sans utiliser la fonction sort D'abord on initialise une variable $max avec la 1ère valeur de tableau. Ensuite on va faire une boucle tant que le tableau contient encore des éléments. C'est avec la fonction splice qui a le rôle...
[PHP] Détecter la résolution d'affichage VoirPHP ne fournit pas de fonction permettant la détection de la résolution d'affichage car l'information concernant l'affichage du visiteur n'est pas fournie nativement par le protocole HTTP. Javascript par contre permet de détecter la résolution...
Javascript - Les fonctions VoirLa notion de fonction On appelle fonction un sous-programme qui permet d'effectuer un ensemble d'instructions par simple appel de la fonction dans le corps du programme principal. Cette notion de sous-programme est généralement appelée fonction...
Javascript - Les variables VoirLe concept de variable Une variable est un objet repéré par son nom, pouvant contenir des données, qui pourront être modifiées lors de l'exécution du programme. En Javascript, les noms de variables peuvent être aussi long que l'on désire,...
Javascript - L'objet Date VoirLes particularités de l'objet Date L'objet Date permet de travailler avec toutes les variables qui concernent les dates et la gestion du temps. Il s'agit d'un objet inclus de façon native dans Javascript, et que l'on peut toujours utiliser. La...

1

adns, le 2 jui 2009 à 11:55:45

Bonjour

j'ai une petite idée ^^

tu fais une fonction qui compte les caractères entre <> tu ajoute 2 pour <> et tu augment la fonction qui tronque :)

enfin c'est juste une idée comme ca car si entre <> il y a pas une balise html ca sera ecrit

Adns
ps: pas super de pouvoir écrire du html quand même.... Hacker Vaillant Rien D'Impossible !!!
Le Monde du partage Remplacera le partage du monde

Répondre à adns

2

Arkha, le 2 jui 2009 à 12:09:14

Merci adns

J'ai déjà essayé dans cette voie là, mais il faut vraiment que la balise soit prise en compte dans l'affichage final. Je ne sais donc pas comment réafficher les balises au bon endroit après avoir tronqué le texte "brut" :/

Pour la recopie de balise, t'en fais pas, j'ai en sorte que se soit sécurisé :)

Répondre à Arkha

3

adns, le 2 jui 2009 à 12:22:44

Oki ...

bah a pars parser pour recup les données affichéés je vois pas trop :S

Adns Hacker Vaillant Rien D'Impossible !!!
Le Monde du partage Remplacera le partage du monde

Répondre à adns

4

adns, le 2 jui 2009 à 12:28:06

Ou peut être recupe le texte dans des variable une variable par tranche de texte ex

123<b>456</b>789
v1 = 123
v2= <b>
v3= 456
v4 = </b>
v5=789

vérification de quelle variable est du texte ou une balise

tu concatène les variables text
tu tronque
et apres tu fais un replace
tu concatene premiere varivable balise avec les 2 suivante et tu remplace ;)

je sais pas si réellement faisable mais ca peux marcher....


Adns Hacker Vaillant Rien D'Impossible !!!
Le Monde du partage Remplacera le partage du monde

Répondre à adns

5

nEm3sis, le 2 jui 2009 à 13:14:46
  • +1

ça va c'est pas encore trop compliqué
s'il te manque quelque chose n'hésite pas

function t(s,n){for(var i=0;n&&i<s.length;n--,i++)while(s.charAt(i)=='<')i=s.indexOf('>',i)+1;return i<s.length?s.slice(0,i)+'...':s}


et tu l'appelle comme ça, la fonction, par exemple si tu ne veux que 6 caractères :
 t('123<strong>45</strong>6789', 6)


edit :
j'y pense ça prend pas en compte les balise html mais tout simplement tout ce qui commence par < et termine par >
ça pose problème ?

Répondre à nEm3sis

6

adns, le 2 jui 2009 à 13:28:37

Bah je pense que ca va lui poser probleme

si le mec veux foutre du html mais qui se trompe le contenu des balises s'affichera

Adns Hacker Vaillant Rien D'Impossible !!!
Le Monde du partage Remplacera le partage du monde

Répondre à adns

7

Arkha, le 2 jui 2009 à 14:32:36

Merci beaucoup adns et nEm3sis,

nEm3sis c'est en effet ce que je cherchais à faire
après quelques petites modifications se sera top!

Répondre à Arkha

8

Arkha, le 2 jui 2009 à 16:25:38

NEm3sis,

Je suis un peu désolé de te demander ça, mais connais-tu l'équivalent de la fonction que tu viens de m'écrire en php?

Grand merci...

Répondre à Arkha

9

nEm3sis, le 2 jui 2009 à 16:44:27
  • +1

Oui voila je viens de te traduire la fonction en php
elle fonctionne pareil

<?php
function t($s,$n){
	for($i=0;$n&&$i<strlen($s);$n--,$i++)
		while($s[$i]=='<')
			$i=strpos($s,'>',$i)+1;
	return ($i<strlen($s))?substr($s,0,$i).'...':$s;
}
?>

Répondre à nEm3sis

10

Arkha, le 2 jui 2009 à 16:51:59

Grand merci,
ça fonctionne impec :)

Répondre à Arkha

11

 nEm3sis, le 2 jui 2009 à 17:13:57

Ravi de t'avoir aidé =)

Répondre à nEm3sis