web-dev-qa-db-fra.com

Fonction Onclick "n'est pas définie"

Je suis assez nouveau pour wordpress et j'essaie de définir et d'appeler une fonction, mais je ne parviens pas à la faire fonctionner.

Le code suivant apparaît dans un fichier php appelé à partir du fichier content.php à l'aide de get_template_part.

<div onclick="checkAllTopicCheckBoxes()"> </div>

J'ai ajouté le code suivant au bas du fichier function.php:

function checkAllTopicCheckBoxes() {
    alert("Hello! I am an alert box!!");
}

Quand je clique sur l'élément, il retourne: 

(index): 363 Uncaught ReferenceError: checkAllTopicCheckBoxes n'est pas défini.

Est-ce que quelqu'un peut m'aider s'il vous plait?

3
Atrag

L'utilisation d'OnClick ou d'attributs similaires est une très mauvaise pratique.

L’utilisation de Javascript Event Listener est un moyen bien plus efficace de le faire. L’enregistrement d’un événement de manière moderne est le méthode discrète de gestion des événements. De plus, pour enregistrer plus d'un écouteur d'événements pour la cible, vous pouvez appeler addEventListener () pour la même cible.

HTML:

<div id="checkAllTopicCheckBoxes"> </div>

Votre JavaScript est censé ressembler à ceci:

document.getElementById ("checkAllTopicCheckBoxes").addEventListener ("click", myFunction, false);

function myFunction() {
  alert("Hello! I am an alert box!!");
}

L'attribut HTML (comme Onclick) doit être évité, car le contenu/la structure et le comportement ne sont pas bien séparés, ce qui rend le bogue plus difficile à trouver.

4
Sagar Sahni

Ce que vous avez écrit est une fonction Javascript, elle doit être entourée de code HTML. Avez-vous écrit votre fonction dans quelque chose comme:

echo('<script>function checkAllTopicCheckBoxes() { alert("Hello! I am an alert box!!");}</script>');

En outre, je pense que Wordpress doit avoir une fonction prête à utiliser pour ajouter des scripts. Essayez de regarder wp_enqueue_script (string $ handle, chaîne $ src = false, tableau $ deps = array (), chaîne | bool | null $ ver = false, bool $ in_footer = false);

edit: Je viens de trouver cette question, elle peut répondre à la vôtre: Comment écrire une fonction Javascript dans le functions.php de Wordpress?

2
Lilamuse

J'ai fait face à la même erreur que toi.

Si nous utilisons l'attribut html onclick, nous devons définir cette fonction onclick au sein du même élément html (à l'aide de balises).

Il est recommandé de créer un écouteur d'événements click en utilisant javascript/jquery, plutôt qu'en utilisant l'attribut html onclick.

0
Rahul Makhija
function checkAllTopicCheckBoxes() {
    alert("Hello! I am an alert box!!");
}

ne doit pas être dans <? ... ?> et doit avoir <script>...</script> wrap, par exemple, 

======== sample.php =======
<? 
// php script is here
?>

<script>
function checkAllTopicCheckBoxes() {
  alert("Hello! I am an alert box!!");
}
</script>

ou si vous voulez inclure js dans le script php, vous devez echo comme ça

======== sample.php =======
<? 
// php script is here

echo '<script>';
echo 'function checkAllTopicCheckBoxes() {';
echo '  alert("Hello! I am an alert box!!");';
echo '}';
echo '</script>';

?>
0