2010-02-25 4 views
0

`` salut,est la différence entre courir <script></script> et function() javascript?

en utilisant l'éditeur wysiwyg whizzywig y ayant constaté que entrez le code ici makeWhizzyWig ("édité", "tous"); est ok

mais en cours d'exécution

<script> 
function doit(){ 
     makeWhizzyWig("edited", "all"); 
} 
</script> 

doit() 

il se casse ....

toute suggestion au sujet de cette différence? aussi je vais apprécier une sorte d'explication sur cette

merci à l'avance makerjoe

------------------------------------------------------------------------------------------- 

as per your request 

this works ok 

<head> 
<script type="text/javascript" src="/makerjoe/js/whizzywig.js"></script> 
</head> 

<body> 
<form name="Whizzy" action="whizzed.php" method="post" onsubmit="syncTextarea();"> 
<textarea name="edited" id="edited" rows="15" cols="70" style="width:99%; height:500px;"> 
</textarea> 
<input type="submit" name="submit" value="Submit" title=" Displays your page, which you can Save from the File menu. "> 
</form> 

<script> 
     makeWhizzyWig("edited", "all"); 
</script> 

</body> 



------------------------------------------------------------------------------------------ 

the following does not work!!! 

<head> 
<script type="text/javascript" src="/makerjoe/js/whizzywig.js"></script> 
</head> 

<body> 
<form name="Whizzy" action="whizzed.php" method="post" onsubmit="syncTextarea();"> 
<textarea name="edited" id="edited" rows="15" cols="70" style="width:99%; height:500px;"> 
</textarea> 
<input type="submit" name="submit" value="Submit" title=" Displays your page, which you can Save from the File menu. "> 

</form> 
<script> 
function doit(){ 
     makeWhizzyWig("edited", "all"); 
} 
</script> 

<a href=javascript:doit()> doit </a> 

</body> 
+1

Contexte? Ce que vous avez posté n'a pas beaucoup de sens. – bdl

+0

S'il vous plaît poster plus de détails sur ce que vous essayez d'accomplir. Vous pouvez nous donner la partie intéressante de la page .html ou .js – MLefrancois

+0

Nous avons besoin du code source complet avant de pouvoir diagnostiquer ce problème. Veuillez mettre en retrait toutes les lignes de code de 4 espaces afin qu'elles apparaissent sous forme de code et non de texte normal. –

Répondre

1

Nous ne pouvions pas voir la question en raison de votre mise en forme sur la question, mais après l'avoir modifié pour ajouter des balises de code pour vous, j'ai remarqué que vous définissez votre fonction en dehors de de votre tag <script>. Ce qui suit devrait fonctionner:

<script> 
    function doit(){ 
     makeWhizzyWig("edited", "all"); 
    } 

    doit(); 
</script> 
+0

désolé est mon erreur l'obole() se trouve en bas de la page html comme suit a href = « javascript: Doït() »> Doït Thanx – makerjoe

+0

S'il vous plaît modifier votre message original avec votre code de travail complet et votre code complet cassé. –

1

Les fonctions sont juste une façon de regrouper les déclarations de code ainsi que d'une manière qui les rend plus faciles à appeler et réutiliser.

Dans votre exemple doit() ne contient qu'une seule instruction et ne contient aucun paramètre, sa valeur est donc discutable, vous pouvez aussi appeler makeWhizzyWig directement. Cependant, dans la plupart des cas, les fonctions sont une partie essentielle du code de structuration et d'organisation.

+0

donc à votre avis les deux exemples sont les mêmes, il suffit d'organiser le code, mais je ne sais pas encore pourquoi 1. exécuter ok et 2. pauses .... – makerjoe

1

Le code que vous affichez devrait fonctionner. Ou au moins, la méthode doit() doit être appelée lorsque vous cliquez sur le lien doit. Si vous ajoutez un appel d'alerte au début de la méthode doit, vous devriez voir apparaître la fenêtre contextuelle lorsque vous cliquez sur le lien. Le faites vous ?

function doit(){ 
    alert('should be reached'); 
    makeWhizzyWig("edited", "all"); 
} 

Si vous ne voyez pas la fenêtre d'alerte, quel navigateur utilisez-vous?

Modifier

Après avoir vu que cela a fonctionné, j'ai créé un fichier js:

test.js 
function makeTest(param1, param2) 
{ 
    alert("first: " + param1 + " second: " + param2); 
} 

et modifié mon fichier html:

<head> 
<script type="text/javascript" src="test.js"></script> 
</head> 

<body> 


<script> 
function doit() 
{ 
     makeTest("edited", "all"); 
} 
</script> 

<a href=javascript:doit()> doit </a> 

</body> 

Cela montre que le problème est pas dans la comme vous appelez la fonction doit mais qu'il y a un problème dans makeWhizzyWig() quand il est appelé depuis un contexte global. Ne peut pas dire beaucoup plus que je n'ai pas la source de makeWhizzyWig mais vous pouvez essayer de changer

<a href=javascript:doit()> doit </a> 

à

<a href="#" onClick="doit()"> doit </a> 

et voir si cela fonctionne

+0

ok je vois l'alerte, mais le problème est en cours d'exécution le fonction makewhizzywig du whizzywig.js avez-vous le tester? – makerjoe

+0

Eh bien, je n'ai pas le code à votre whizzywig donc je ne peux pas le tester. Si vous mettez une alerte dans la fonction makeWhizzyWig, la voyez-vous? – MLefrancois

+0

oui je le vois!mais le wysiwyg ne fonctionne pas du tout, et oui, le problème est dans la fonction makewhizzy() de toute façon je ne sais toujours pas pourquoi la fonction makewhizzy fonctionne et elle se casse appelée par une fonction, quelle est la chose mystérieuse qui se passe à l'intérieur, et j'ai encore des doutes sur ma première question sur la différence entre les scripts html javascript et l'appel d'une fonction qui fait la même chose, sont-ils les mêmes? – makerjoe

1

makeWhizzyWig (« édité » , "tout"); crée un nouveau Whizzywig en utilisant document.write. Il doit être appelé en ligne avant le chargement de la page. Votre problème est que vous n'appelez votre fonction doit() qu'après le chargement de la page, ainsi le document.write dans makeWhizzyWig ne fonctionnera pas car le document est déjà terminé. Voir http://unverse.net/WYSIWYG et cliquez sur "Dynamic Loading" pour un exemple de création dynamique d'éditeurs avec Whizzywig.

Ou essayez Whizzywig 2011, qui résout ce problème en ne pas utiliser document.write

Questions connexes