Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

comparer mot cliqué avec ceux contenus dans une liste

26 réponses
Avatar
pascal scalpa
Bonjour
Je cherche =E0 savoir s'il est possible de v=E9rifier (tester) si le mot
cliqu=E9 dans un texte (contenu dans un tag <p>) figure dans une liste
(stock=E9e sous forme de variable).

Concr=EAtement, je veux donner un texte =E0 lire =E0 mes =E9l=E8ves avec co=
mme
consigne par exemple, clique sur tous les "noms communs" de ce texte.

Merci de m'indiquer comment proc=E9der et si c'est possible!
pascal

10 réponses

1 2 3
Avatar
SAM
Le 8/23/09 2:53 PM, pascal scalpa a écrit :
Bonjour
Je cherche à savoir s'il est possible de vérifier (tester) si le mot
cliqué dans un texte (contenu dans un tag <p>) figure dans une liste
(stockée sous forme de variable).

Concrêtement, je veux donner un texte à lire à mes élèves avec comme
consigne par exemple, clique sur tous les "noms communs" de ce texte.

Merci de m'indiquer comment procéder et si c'est possible!



ce devrait

pascal



Mais plus facilement pour une phrase sans ponctuation :
<http://cjoint.com/?ixtqlz5ilq>

--
sm
Avatar
SAM
Le 8/23/09 7:19 PM, SAM a écrit :

Mais plus facilement pour une phrase sans ponctuation :
<http://cjoint.com/?ixtqlz5ilq>



Bon ... allez ... pour n'importe quelle succession de phrases :
<http://cjoint.com/?ixuVCw86Ze>
ponctuations acceptées.

Les phrases
(éléments 'P', 'OL', 'UL', 'BR' ... tout ce qu'on veut sauf les 'SPAN')
sont à mettre dans le div "exo".

--
sm
Avatar
pascal scalpa
Trop fort ......... je suis scié! Je vais essayer de comprendre
comment cela marche(je débute totalement en javascript!!!). Un grand
merci...Stéphane.
Petites précisions:
1° Pourquoi le point de la phrase disparaît à l'écran alors qu'il e st
dans le code html?
2° Les commentaires suivants sont ils justes?
<script type="text/javascript">

var liste = ['père','mère','bébé','tante','oncle']; // un array des
mots à trouver

/******** rien à changer ci-dessous *******/
function cliquer() { // vu son nom c'est la fonction
qui permet de sélectionner un mot?
var exo = document.getElementById('exo'); //exo est le contenu de
la div (string ?)
var txt = exo.innerHTML; // txt est le contenu modifié
de la div (string ou array ?)
txt = txt.match(/[wéèêçàù]+(?=[s.,;!?])/gi); // on che rche s'il y
a ces caractères dans txt s matches whitespace w matches any
alphanumerical character /gi case insensitive
txt = '<span onclick="verif(this)">'+txt.join('</span> <span
onclick="verif(this)">')+'</span>'; // là je suis complètement
largué... dès qu'on clique ça incrémente total
exo.innerHTML = txt; // on modifie le contenu du div?
}

var total = 0, // un compteur
nbre = juste = liste.length, // le nombre d'éléments de
l'array
ok = liste;

function verif(quoi) {
total++; // on incrémente à chaque clic
quoi.className = 'red'; // on met en rouge avec le css
quoi = quoi.innerHTML; // quoi est entouré des balises
span et mis en rouge
for(var i=0, n=liste.length; n>i; i++) if ( liste[i] == quoi) { //
si le mot cliqué est dans la liste
juste --; // on décrémente juste
le nbre de réponses à trouver
liste = liste.slice(0,i).concat(liste.slice(i+1,n)); // Là je
ne vois pas...
break; // on sort de la boucle for si
on a atteint le nbre d'éléments de la liste ?
}
}

function fini() {
var f = document.getElementById('fin');
f.innerHTML = 'Nombres de noms communs restants à trouver : '+juste
+'<br>' +
'Nombres de clics = '+total+'<br>';
if(juste==0) // si
juste =0 c'est qu'on a tout trouvé
f.innerHTML += '<span class="' + ( nbre==total? 'green' : 'red ')
+'">CORRECT</span>'; // si on a trouvé tout on écrit en vert sinon
en rouge (encore un test avec si?)
else
f.innerHTML += '<span class="red">INCORRECT</span>';
f.innerHTML += '<br><em>(vert = OK, rouge = à revoir)</em>';
f.style.display = 'block';
}

function solution() {
var t = document.getElementById('exo').getElementsByTagName('SPAN'),
s = document.getElementById('soluce');
s.innerHTML = '';
for(var i=0, n=t.length; n>i; i++) {
var a = t[i].cloneNode(true);
a.onclick = '';
a.className = '';
for(var j in ok) if(ok[j] == a.innerHTML) a.className='red';
s.appendChild(a);
s.appendChild(document.createTextNode(' '));
}
s.style.display = 'block';
}

window.onload = cliquer;
</script>


Ps j'ai vu sur ton site que tu étais architecte, peux tu me dire si
on peut exporter des fichier dwg autocad vers svg ?(j'ai le ppms de
l'école à faire pour la rentrée et je dispose de plans dans ce format
dwg et cherche à les compléter avec inkscape)

merci encore
Avatar
SAM
Le 8/23/09 9:58 PM, pascal scalpa a écrit :
Trop fort ......... je suis scié! Je vais essayer de comprendre
comment cela marche(je débute totalement en javascript!!!). Un grand
merci...Stéphane.



Oui, bon, peut-être il y a t-il moyen de faire + propre ? ou + simple.

Petites précisions:
1° Pourquoi le point de la phrase disparaît à l'écran alors qu'il est
dans le code html?



Paske !
Corrigé par léger changement de méthode dans la proposition suivante
(<http://cjoint.com/?ixuVCw86Ze>).

Ici on matche les groupes de lettres séparées par espace(s) ou
ponctuation, on récupère tous les mots de l'exo, puis on regroupe tous
ces mots par un join() de l'array précédent en oubliant la pontctuation.
Au passage chaque mot est mis dans un span avec un onclick.

Dans la proposition suivante, au lieu de "matcher" l'exo c'est la
fonction "replace" qui est utilisée pour trouver chaque mot et l'inclure
dans un span. Cette fois les ponctuations (et autres particularités)
peuvent être conservées.

2° Les commentaires suivants sont ils justes?



plus ou moins

<script type="text/javascript">

var liste = ['père','mère','bébé','tante','oncle']; // un array des
mots à trouver



voui


/******** rien à changer ci-dessous *******/
function cliquer() { // vu son nom c'est la fonction qui permet de sélectionner un mot?



Voui,
si on veut,
recherche des mots +
incorporation des mots dans un span qui a un onclick

var exo = document.getElementById('exo'); //exo est le contenu de la div (string ?)



"exo" est le div (et aussi l'id du div) qui contient le texte à analyser

var txt = exo.innerHTML; // txt est le contenu modifié de la div (string ou array ?)



"txt" est l'innerHTML de ce div (le contenu du div en "string")
à ce moment-ci

puis on fait évoluer (on modifie) ce "txt" progressivement

txt = txt.match(/[wéèêçàù]+(?=[s.,;!?])/gi); // on cherche s'il y
a ces caractères dans txt s matches whitespace w matches any
alphanumerical character /gi case insensitive



/*
voilà,
[wéèêçàù]+ w ou é ou è ou ... vus une fois ou plus
(?=[s.,;!?]) si suivis de s ou . ou , ou ...
/gi g: on répète la recherche autant de fois que nécessaire
i: pour majuscules ou minuscules indiféremment

En fr :
<http://stephane.moriaux.pagesperso-orange.fr/truc/js_regexp_testeur.shtml>
<https://developer.mozilla.org/fr/R%C3%A9f%C3%A9rence_de_JavaScript_1.5_Core/Objets_globaux/RegExp>
<https://developer.mozilla.org/index.php?title=fr/Guide_JavaScript_1.5/Objets_pr%C3%A9d%C3%A9finis>
*/

txt = '<span onclick="verif(this)">'+txt.join('</span> <span
onclick="verif(this)">')+'</span>'; // là je suis complètement
largué... dès qu'on clique ça incrémente total



/*
txt = tag ouvrant du 1er span (avec onclik)
+ l'array (le match précédent) remis en string avec :
- le tag span onclick
- une espace entre chacun de ses termes
+ tag span fermant
ce ne doit pas être ici qu'est incrémenté 'total'
c'est la fonction 'verif()' qui va le faire
*/

exo.innerHTML = txt; // on modifie le contenu du div?



voui

}

var total = 0, // un compteur
nbre = juste = liste.length, // le nombre d'éléments de l'array
ok = liste;

function verif(quoi) {



// verif() est la fonction appelée dans chaque span
// (au clic sur chaque mot)

total++; // on incrémente à chaque clic
quoi.className = 'red'; // on met en rouge avec le css
quoi = quoi.innerHTML; // quoi est entouré des balises span et mis en rouge



// "quoi" est l'élément span (balises et contenu)

for(var i=0, n=liste.length; n>i; i++) if ( liste[i] == quoi) { // si le mot cliqué est dans la liste
juste --; // on décrémente juste le nbre de réponses à trouver



// juste = le nbre de termes (mots) restant à trouver

liste = liste.slice(0,i).concat(liste.slice(i+1,n)); // Là je ne vois pas...



// le terme correspondant de l'array "liste" est supprimé de cet array
// voir : <http://fr.selfhtml.org/javascript/objets/array.htm#slice>
// voir : <http://fr.selfhtml.org/javascript/objets/array.htm#concat>

break; // on sort de la boucle for si on a atteint le nbre d'éléments de la liste ?



// on sort de la boucle si le terme (le mot cliqué) a été trouvé
// dans la liste (des termes restants à trouver)

}
}

function fini() {
var f = document.getElementById('fin');
f.innerHTML = 'Nombres de noms communs restants à trouver : '+juste
+'<br>' +
'Nombres de clics = '+total+'<br>';
if(juste==0)// si juste =0 c'est qu'on a tout trouvé
f.innerHTML += '<span class="' + ( nbre==total? 'green' : 'red')
+'">CORRECT</span>'; // si on a trouvé tout on écrit en vert sinon
en rouge (encore un test avec si?)



// voui, en notation abrégée
// if(nbre==total) return 'green' else return 'red';
// (nbre==total)? 'green' : 'red';

else
f.innerHTML += '<span class="red">INCORRECT</span>';
f.innerHTML += '<br><em>(vert = OK, rouge = à revoir)</em>';
f.style.display = 'block';
}

function solution() {
var t = document.getElementById('exo').getElementsByTagName('SPAN'),
s = document.getElementById('soluce');
s.innerHTML = '';
for(var i=0, n=t.length; n>i; i++) {
var a = t[i].cloneNode(true);
a.onclick = '';
a.className = '';
for(var j in ok) if(ok[j] == a.innerHTML) a.className='red';
s.appendChild(a);
s.appendChild(document.createTextNode(' '));
}
s.style.display = 'block';
}

window.onload = cliquer;
</script>


Ps j'ai vu sur ton site que tu étais architecte, peux tu me dire si
on peut exporter des fichier dwg autocad vers svg ?(j'ai le ppms de



Non, je n'ai pas de 'truc' pour dwg --> svg (en tous cas pas essayé)
Google ->
pour PC -->
<http://www.dwgtool.com/dwg-to-svg.htm>
pour Mac --> conversion image vers SVG :
<http://delineate.sourceforge.net/>

et pour ppms ... je ne sais ce que c'est.
Plan Particulier de Mise en Sécurité ?
à faire en relation avec celui de la commune ?
Bon courage ! ! !
Je pense que ma 1/2 a dû le faire y a 1 ou 2 ans, mais qu'en texte, je
crois !
(et que la Mairie est tombée des nues ... késako ?)
De ttes façons tt ça c'est du pipeau : son stock de pilules
anti-radioativité à distribuer au canton est périmé et n'a pas été
remplacé ...

l'école à faire pour la rentrée et je dispose de plans dans ce format
dwg et cherche à les compléter avec inkscape)



en OBJ, 3DS, STL (Ascii + Binaire), OFF et COFF il existe un "player"
libre, GLC-Player : <http://www.glc-player.net>

Ha! Oui! Si ça pouvait se faire comme ça (si inkscape ne flanche pas
devant la complexité du dwg traduit résultant).


Attention! si le plan est à afficher, en 2012 il devra être en relief !
(plus légende en braille)
inkscape sait gérer une table traçante pour découper le plexiglass ?

merci encore



Rien n'a été testé avec IE !

et pour le ppms, comme ça doit introduire tous les cas d'accidents
possibles +/- localement (coulée de boues, éruption, accident nucléaire,
déraillement du train de produits chimiques, pétrolier fou ... ad
nausea) et les sécurités prévues en fonction +/- relativement avec les
autres instances territoriales (pompiers, samu, commune, département,
région) des plans graphiques il en faudra tt un tas ...
Si vous ne vous y mettez que maintenant, comptez rentrée de Noël ou
Pacques (2011 ?) ;-)

--
sm
Avatar
Paul Gaborit
À (at) Sun, 23 Aug 2009 19:19:45 +0200,
SAM écrivait (wrote):
Mais plus facilement pour une phrase sans ponctuation :
<http://cjoint.com/?ixtqlz5ilq>



Joli... Mais même après ajout de la gestion de la ponctuation, il
reste un problème de fond : les homonymes.

Par exemple, dans la phrase « il tente de monter sa tente », comment
indiquer que le premier "tente" est un verbe alors que le second et un
nom ?

--
Paul Gaborit - <http://perso.mines-albi.fr/~gaborit/>
Avatar
SAM
Le 8/24/09 9:31 AM, Paul Gaborit a écrit :
À (at) Sun, 23 Aug 2009 19:19:45 +0200,
SAM écrivait (wrote):
Mais plus facilement pour une phrase sans ponctuation :
<http://cjoint.com/?ixtqlz5ilq>



Joli... Mais même après ajout de la gestion de la ponctuation, il
reste un problème de fond : les homonymes.

Par exemple, dans la phrase « il tente de monter sa tente », comment
indiquer que le premier "tente" est un verbe alors que le second et un
nom ?



Mais on t'en pose des questions ?
;-)

Yaka prendre des exemples sans ce piège épivala.

Je ne vois pas comment par RegExp contrôler s'il y a un sujet se
rapportant au mot...
Un truc genre balise spécifique pour chaque verbe homonyme ?

--
sm
Avatar
Pascal
Paul Gaborit a écrit :
Par exemple, dans la phrase « il tente de monter sa tente », commen t
indiquer que le premier "tente" est un verbe alors que le second et un
nom ?



[totalement HS, désolé]
Bah, yaka remplacer le deuxième "tente" par "tante".
Ça éliminera le pb, et les gamins pourront se marrer ;-)

Pascal
Avatar
Paul Gaborit
À (at) Mon, 24 Aug 2009 17:18:52 +0200,
Pascal écrivait (wrote):
Paul Gaborit a écrit :
Par exemple, dans la phrase « il tente de monter sa tente », comment
indiquer que le premier "tente" est un verbe alors que le second et un
nom ?



[totalement HS, désolé]
Bah, yaka remplacer le deuxième "tente" par "tante".
Ça éliminera le pb, et les gamins pourront se marrer ;-)



Dans le même genre (à dire très vite) :

Ta tata.
Ton tonton.
Ta tata tentante.
Ton tonton tenté.
Ta tata tentante tenta ton tonton tenté.
Ton tonton tenté tata ta tata tentante.

Et pour retomber sur le sujet initial : dans la dernière phrase,
comment distinguer le verbe "tata" du nom "tata" ?

:-)

--
Paul Gaborit - <http://perso.mines-albi.fr/~gaborit/>
Avatar
SAM
Le 8/24/09 7:22 PM, Paul Gaborit a écrit :
À (at) Mon, 24 Aug 2009 17:18:52 +0200,
Pascal écrivait (wrote):
Paul Gaborit a écrit :
Par exemple, dans la phrase « il tente de monter sa tente », comment
indiquer que le premier "tente" est un verbe alors que le second et un
nom ?


[totalement HS, désolé]
Bah, yaka remplacer le deuxième "tente" par "tante".
Ça éliminera le pb, et les gamins pourront se marrer ;-)



Dans le même genre (à dire très vite) :

Ta tata.
Ton tonton.
Ta tata tentante.
Ton tonton tenté.
Ta tata tentante tenta ton tonton tenté.
Ton tonton tenté tata ta tata tentante.



Aurais-tu des origines du côté de Pézenas ?
(Oui?
alors une citation de ton oncle Boby, sans doute à propos de ta tante :
« Davantage d'avantages avantagent davantage. » )

Et pour retomber sur le sujet initial : dans la dernière phrase,
comment distinguer le verbe "tata" du nom "tata" ?

:-)



Je n'ai pas trouvé 'tata' dans mon dictionnaire
(alors que 'tonton' y est! Sexiste ce dico ?).

Ceci étant, ce serait plutôt :
"Ton tonton tenté tâta ta tata tentante."
ce qui, par bonheur, lève le doute.

cf :
<http://motcomptedouble.blog.lemonde.fr/category/jean-calbrix/>

--
sm
Avatar
Paul Gaborit
À (at) Tue, 25 Aug 2009 00:53:56 +0200,
SAM écrivait (wrote):
Je n'ai pas trouvé 'tata' dans mon dictionnaire
(alors que 'tonton' y est! Sexiste ce dico ?).



Sexiste, c'est certain !
<http://atilf.atilf.fr/dendien/scripts/tlfiv5/displayp.exe?sB61497780;i=ft-1-8.htm>

Ceci étant, ce serait plutôt :
"Ton tonton tenté tâta ta tata tentante."
ce qui, par bonheur, lève le doute.



C'est tout à fait vrai (honte à moi pour avoir oublié cet accent) et
mon exemple n'en est plus un. Restons-en donc, pour l'instant, à
l'histoire de la tente qu'on tente de planter.

cf :
<http://motcomptedouble.blog.lemonde.fr/category/jean-calbrix/>



Sympa.

Cela m'inspire un autre exemple : « il lit dans son lit. »

Et hop ! ;-)

--
Paul Gaborit - <http://perso.mines-albi.fr/~gaborit/>
1 2 3