I have two external .js files. The first contains a function. The second calls the function.
file1.js
$(document).ready(function() { function menuHoverStart(element, topshift, thumbchange) { ... function here ... } });
file2.js
$(document).ready(function() { setTimeout(function() { menuHoverStart("#myDiv", "63px", "myIMG"); },2000); });
The trouble is that this is not running the function. I need the two separate files because file2.js is inserted dynamically depending on certain conditions. This function works if I include the setTimeout... line at the end of file1.js
Any ideas?
A function cannot be called unless it was defined in the same file or one loaded before the attempt to call it. A function cannot be called unless it is in the same or greater scope then the one trying to call it.
Answer: Use the export and import Statement Since ECMAScript 6 (or ES6) you can use the export or import statement in a JavaScript file to export or import variables, functions, classes or any other entity to/from other JS files.
The problem is, that menuHoverStart
is not accessible outside of its scope (which is defined by the .ready()
callback function in file #1). You need to make this function available in the global scope (or through any object that is available in the global scope):
function menuHoverStart(element, topshift, thumbchange) { // ... } $(document).ready(function() { // ... });
If you want menuHoverStart
to stay in the .ready()
callback, you need to add the function to the global object manually (using a function expression):
$(document).ready(function() { window.menuHoverStart = function (element, topshift, thumbchange) { // ... }; // ... });
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With