Signaler

[Javascript] Importer un fichier js [Résolu]

Posez votre question electroking 132Messages postés dimanche 14 septembre 2014Date d'inscription 1 décembre 2016 Dernière intervention - Dernière réponse le 21 oct. 2016 à 09:58
Salut,
je souhaiterais, à partir d'une liste du type:

liste = [
'fonction1',
'fonction2'
];


pouvoir importer ou relier a la page html le fichier

fichierUrl = liste[i] + '.js';


pour exécuter la fonction

nomFonction = liste[i] + 'Main()';


qui se trouve à l'intérieur depuis ma page HTML (qui est déjà chargée).

J'ai essayé de placer une balise

<script src="fichierUrl "></script>


sauf que comme je la place APRES le chargement de la page et l'exécution du début du script, il ne la reconnait pas.

Uncaught ReferenceError: historyMain is not defined
(anonymous function)


Comment pourrais-je m'y prendre ?

Cordialement,
Faure Lucas.
Afficher la suite 
Utile
+0
moins plus
Bonsoir.
Tu as l'air de confondre fonction et fichier js.

donc que représente pour toi fonction1.js ?
electroking 132Messages postés dimanche 14 septembre 2014Date d'inscription 1 décembre 2016 Dernière intervention - 20 oct. 2016 à 20:00
Non, je ne confond pas ^^

fonction1.js est un fichier contenant la fonction fonction1Main()
Répondre
Ajouter un commentaire
Utile
+0
moins plus
Bonjour

Il y a bien le problème d'attendre que le script soit chargé avant d'appeler la fonction qu'il contient, mais il y en a un autre que tu ne sembles pas avoir vu.

Dans
<script src="fichierUrl "></script>
, fichierUrl est bel et bien une l'URL "fichierUrl ", pas la variable javascript fichierUrl que tu as défini ailleurs. C'est la valeur d'un attribut(src) d'une balise HTML. Les variables javascript n'existent que dans le code javascript, et une balise HTML, même la balise <script>, n'est pas du code javascript.

Pour obtenir l'effet que tu désires, il faudrait qu'en javascript tu viennes affecter ta variable fichierUrl à l'attribut src d'une balise <script>.
Ça peut être fait en manipulant le DOM ou avec un document.write, par exemple.
Ensuite, il faut que tu appelles ta fonction dans le "onload" de cette même balise.
Ça a l'air un peu laborieux, mais pas infaisable. Je regarde ce que ça peut donner et je reviens.
le père. 5706Messages postés mardi 15 mai 2012Date d'inscription 5 décembre 2016 Dernière intervention - 20 oct. 2016 à 23:04
<body>
<div>div1 pour voir</div>

<script type= "text/javascript">

var liste = [
 'fonction1',
 'fonction2'
];
var i=0;
var lt=String.fromCharCode(60);
fichierUrl = liste[i] + '.js';
nomFonction = liste[i] + 'Main()';

document.write('<script src=' + fichierUrl +' onload="' + nomFonction + ';">'+lt+'/script>');

</script>

<div>div2 pour voir</div>

  </body>

Ça lance bien, selon que i vaut 0 ou 1, la fonction fonction1Main de fonction1.js, ou la fonction fonction2Main de fonction2.js
Pas très propre, mais ça marche.
Répondre
electroking 132Messages postés dimanche 14 septembre 2014Date d'inscription 1 décembre 2016 Dernière intervention - 21 oct. 2016 à 09:58
Merciiiiiiiiii je t'aime toi
en fait contrairement a ce que ce qui ont lus ce message ont du penser j'ai bien compris les système de fichiers et de fonctions ^^ je voulais obtenir ce résultat là en fait :

<body>

<div id="links"></div>

<script type= "text/javascript">
var liste = [
 'fonction1',
 'fonction2'
];
var i=0;
for (i; i<liste.length; i++) {
 var lt=String.fromCharCode(60);
 fichierUrl = liste[i] + '.js';
 nomFonction = liste[i] + 'Main()';
 
 document.write('<script src=' + fichierUrl +'>'+lt+'/script>');
 document.getElementById('links').innerHTML = document.getElementById('links').innerHTML + '<br /><a href="javascript: ' + nomFonction + ';" rel="nofollow noopener noreferrer" target="_blank">' + nomFonction + '</a>';
}
</script>

</body>


Je me suis seulement très mal exprimé :/
Répondre
Ajouter un commentaire

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !