Gérer un lexique contenu dans un autre fichier en Javascript

Fermé
alex012 Messages postés 87 Date d'inscription mardi 12 février 2013 Statut Membre Dernière intervention 28 août 2021 - Modifié le 18 août 2019 à 19:44
alex012 Messages postés 87 Date d'inscription mardi 12 février 2013 Statut Membre Dernière intervention 28 août 2021 - 20 août 2019 à 16:14
bonjour
après plus de 2 heures de recherche sur google je n'ai pas trouvé de solution, je ne sais même pas comment lui formuler ma requête donc je viens vers vous pour avoir une solution.
Je suis en train de faire un site et pour certains mot je veux que la définition s'affiche quand on passe la souris dessus, j'ai su le faire en Javascript et ça fonctionne trés bien mais je voudrais aller encore plus loin et stocker mon lexique dans un autre fichier et le lire avec JS.
pour le moment j'utilise des conditions.

var definition = "";
if (mot == "mot1") definition = "Définition du mot 1.";
else if (mot == "mot2") definition = "Définition du mot 2.";
else if (mot == "mot3") definition = "Définition du mot 3.";
else return;

Ce que je voudrais faire c'est écrire par exemple, écrire ça dans un fichier.

mot1 = Définition du mot 1.
mot2 = Définition du mot 2.
mot3 = Définition du mot 2.

et avec JS, chercher dans ce fichier si le mot existe et si oui, afficher sa définition.
avez vous des solutions svp?
Merci.
A voir également:

1 réponse

Bonsoir,
connaissez vous les objets en javascript?
Voici sous la notation JSON:
var lexique={
a:'hello',
valeurnumerique:7,
valeurchaine:'blabla',
etencore:'',
tableau:['x','y','z'],
voire:function(){alert('dis quelque choe')}
}



Tout comme CSV le JSON permet d'écrire des fichiers textes non formatés, ce qui n'empêche pas que ce soit des couples de valeurs:
https://www.w3schools.com/js/js_json_intro.asp

Bien sûr tout ça c'est moins intéressant qu'une base de données.


Au passage votre script pour if est faux, en plus les else if servent à rien un simple if suffit.Avec la notation objet pas besoin de test de condition puisque la valeur est nulle si la 'propriétés' de l'objet n'existe pas.


console.log(lexique.a);
console.log(lexique.b);//-- n'existe pas odnc renvoi 'undefined' 

//éventuellement
if(lexique.a){
  console.log(lexique.a);
}
//voire
function afficheDefinition(valeur){
if(lexique[valeur]){return lexique[valeur];}

}
0
Sinon deux tableaux me semble faire l'affaire amplement:

let lexique=['a', 'b' , 'c' , 'd'];
let definitions=['la lettre a', 'la lettre b', 'la lettre c', 'la lettre d'];
function(cherche){
if(lexique.includes(cherche)){
return definitions[lexique.indexOf(cherche)];

}
return;
}


au final il existe bien des méthodes pour faire ce que vous voulez. Tout dépends de vos connaissances, habitudes et besoins.
0
alex012 Messages postés 87 Date d'inscription mardi 12 février 2013 Statut Membre Dernière intervention 28 août 2021
Modifié le 19 août 2019 à 15:20
Merci pour votre aide mais ça ne fonctionne pas correctement, si je met tout dans un même fichier il n'y a aucun problème mais ce que je veux c'est deux fichiers séparés et là rien ne fonctionne,
var requestURL = 'Lexique.json';
 var request = new XMLHttpRequest();
 request.open('GET', requestURL);
 request.responseType = 'json';
 request.send();
 request.onload = function(){
 
 if(lexiques[mot])
 {reste du code...}

j'ai ça pour importer mon lexique contenu dans le fichier Lexique.json
var lexiques={"mot1" : "définition mot 1.",
 "mot2" : "définition mot 2",
}

et j'ai toujours l'erreur "lexiques is not defined", j'ai fais pleins de recherches sur internet, essayé tout ce qui me passait par la tête mais rien ne fonctionne.
avez vous une soluion svp?
Vous parliez d'utiliser une BDD, j'y ai pensé aussi, ça serai le mieux mais peut ont gérer des BDD en JS?
Merci.
0
alex012 Messages postés 87 Date d'inscription mardi 12 février 2013 Statut Membre Dernière intervention 28 août 2021
19 août 2019 à 18:56
J'ai finalement utilisé une BDD avec AJAX mais je n'arrive plus à récupérer la position de la souris
0
JS est côté client est une BDD ne doit/peut pas être accessible directement. Mais dans le premier cas essayez de renommer votre fichier Lexique.json en lexique.json certains serveur ont des problèmes avec la casse.

Ensuite c'est faux ceci car ce n'est pas du JSon mais un objet JavaScript et JSon est du simple texte avec des séparateurs.
/* ceci est du JavaScript qui utilise la notation objet JSon */
var lexiques={"mot1" : "définition mot 1.",
 "mot2" : "définition mot 2",
}

/*ceci est du JSon */

{
    "menu": {
        "id": "file",
        "value": "File",
        "popup": {
            "menuitem": [
                { "value": "New", "onclick": "CreateNewDoc()" },
                { "value": "Open", "onclick": "OpenDoc()" },
                { "value": "Close", "onclick": "CloseDoc()" }
            ]
        }
    }
}
/* remarquez comme ça ressemble à du csv, du xml ou autre fichier de texte à repères, donc aucune valeur de variable ou symbole d'attribution de valeur ça n'existe pas dans un texte à séparateurs */


Donc pas confondre les deux. Et dans les exemples que je vous ait donné c'était clair selon moi: plusieurs méthodes différentes et sur le JSon il y avait bien les explications en utilisant la méthode de l'objet JavaScript JSON.stringify pour convertir le JSON (du simple texte) en objet/variables JavaScript. C'était expliqué dans le lien que j'ai donné.

ça devient un peu lourd du coup d'utiliser AJAX sauf si c'est justifié mais risque de ralentir lourdement la page si ce n'est pas justifié. La position de la souris n'étant pas asynchrone il faut la traiter différemment de la requête AJAX qui l'est par définition.

Voilà en espérant c'est plus clair pour vous , bon dév.
0
alex012 Messages postés 87 Date d'inscription mardi 12 février 2013 Statut Membre Dernière intervention 28 août 2021
20 août 2019 à 14:23
Merci beaucoup pour votre long message d'explication, oui vos explications sont très clair, grâce à vous j'ai su faire un script qui fonctionne très bien, c'est juste pour faire en deux fichiers séparés que je n'ai pas compris, je ne connais que le Javascript "de base", je sais faire des scripts simple mais dès qu'il y a besoin de JSON, AJAX, et tous les autres je suis perdu je les connais de nom mais je sais pas m'en servir, maintenant je commence à connaître AJAX mais je le trouve encore extremement complexe.
Je vais donc réessayer JSON mais je n'ai pas envie de passer énormément de temps à l'apprendre sachant que la première version de mon site est fini (J'ai juste à faire une 20aine de dessins et je peux le passer en ligne, tout le reste fonctionne parfaitement) et cette fonctionnalité de lexique c'est une idée de dernière minute, je n'ai pas envie de reporter encore la mise en ligne de mon site juste pour ça même si c'est vraiment bien.
Donc je vais encore passer aujourd'hui à essayer de faire mon script à l'aide de vos explication et si je n'y arrive pas je repasserai en un seul fichier pour la première version et je garderais vos explications en favori pour y revenir un peu plus tard.
Merci beaucoup pour tout le temps que vous m'avez attribué et pour ces très bonnes explications.
0