Aufruf der function in der externen js-Datei

Test .php

init_widget('john','robert');

widget.js

  (function() { // Localize jQuery variable var jQuery; /******** Load jQuery if not present *********/ if (window.jQuery === undefined || window.jQuery.fn.jquery !== '1.4.2') { var script_tag = document.createElement('script'); script_tag.setAttribute("type","text/javascript"); script_tag.setAttribute("src", "https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"); if (script_tag.readyState) { script_tag.onreadystatechange = function () { // For old versions of IE if (this.readyState == 'complete' || this.readyState == 'loaded') { scriptLoadHandler(); } }; } else { // Other browsers script_tag.onload = scriptLoadHandler; } // Try to find the head, otherwise default to the documentElement (document.getElementsByTagName("head")[0] || document.documentElement).appendChild(script_tag); } else { // The jQuery version on the window is the one we want to use jQuery = window.jQuery; main(); } /******** Called once jQuery has loaded ******/ function scriptLoadHandler() { // Restore $ and window.jQuery to their previous values and store the // new jQuery in our local jQuery variable jQuery = window.jQuery.noConflict(true); // Call our main function main(); } /******** Our main function ********/ function main() { jQuery(document).ready(function($) { function init_widget(fname,lname) { $('#widget_dta').append('

first name :'+fname+'

last name :'+lname+'

'); } }); } })();

Fehler: Ich bekomme diesen Fehler “ReferenceError: init_widget ist nicht definiert”. kann mir jemand helfen wo ich falsch mache.

Solutions Collecting From Web of "Aufruf der function in der externen js-Datei"

Ich denke, dass die Datei script.js nicht richtig script.js wird. Wenn es geladen wird, sollte die function wie erwartet funktionieren.

Verweisen Sie auf den vollständigen Pfad des Skripts in Ihrem script.js-Aufruf? mögen

  

versuche, diese Datei von der Seitenquelle zu öffnen und zu sehen, ob sie die richtige js-Datei lädt?

Es ist immer die beste Vorgehensweise, die function wp_enqueue_script zum Laden von js-Dateien zu verwenden.

Ihre init_widget function ist in test.php nicht sichtbar.

Sie müssen Ihrer init_widget function globale Sichtbarkeit geben:

 /******** Our main function ********/ function main() { window.myutils = window.myutils || {}; //Create a little namespace for your own functions so that they are not all global. //We dont need the jQuery on ready block here. You should assume that whoever calls init_widget will wait for the page to be ready first before calling. window.myutils.init_widget = function(fname,lname) { var $ = jQuery; //convenience so we can still use $ here instead of writing out jQuery all the time. $('#widget_dta').append('

first name :'+fname+'

last name :'+lname+'

'); }; }

Und dann test.php du das in deiner test.php Datei tun:

 

Ihre widgets.js Datei sollte nur alle functionen definieren, die sofort aufgerufen werden können. Nur der Code, der die functionen tatsächlich verwenden muss, sollte dann darauf warten, dass ein jQuery on Page-ready-Ereignis ausgetriggers wird, bevor er versucht, eine der Widgetfunktionen zu verwenden.