Tengo un archivo js donde hay una función con múltiples parámetros.
function initSlider(slider, sliderRow, slides, CLONES_COUNT, doAutoPlay) { . . . }Y quiero usar esta función en diferentes páginas, pero con parámetros ligeramente diferentes, digamos que para una de las páginas habrá
initSlider(slider, sliderRow, slides, (slides.length < 2) ? 0 : 1, slides.length > 1)La pregunta es, ¿cómo llamo a esta función de inicialización en la página misma?
La página habitual de laravel, blade.php donde al final hay un apartado con scripts
@section('scripts') <script src="/js/slider.js"></script> @endsectionlo intenté así
@section('scripts') <script src="/js/slider.js"></script> <script> $(document).ready(function(){ initSlider(slider, sliderRow, slides, (slides.length < 2) ? 0 : 1, slides.length > 1); }); </script> @endsectionParece que estoy haciendo todo bien, pero recibo errores.
excepción jQuery.Deferred: initSlider no está definido ReferenceError: initSlider no está definido en HTMLDocument. (http://test.loc/blog/article_1:730:9) en e (https://code.jquery.com/jquery-3.6.0.min.js:2:30038) en t (https:/ /code.jquery.com/jquery-3.6.0.min.js:2:30340) indefinido
Error de referencia no capturado: initSlider no está definido en HTMLDocument. (artículo_1:730) en e (jquery-3.6.0.min.js:2) en t (jquery-3.6.0.min.js:2)
Debe llamar a su función dentro $(document).ready()
El método .ready() ofrece una manera de ejecutar código JavaScript tan pronto como el Modelo de objetos del documento (DOM) de la página sea seguro de manipular. A menudo, este será un buen momento para realizar tareas necesarias antes de que el usuario vea o interactúe con la página, por ejemplo, para agregar controladores de eventos e inicializar complementos.
Explicación: los scripts se cargan de forma asíncrona, por lo que no se garantiza que su archivo de script se cargue antes de llamar a la función. Al usar .ready() , se asegura de que se llame a la función una vez que todo lo demás esté cargado.
@section('scripts') <script src="/js/slider.js"></script> <script> $(document).ready(function(){ initSlider(slider, sliderRow, slides, (slides.length < 2) ? 0 : 1, slides.length > 1); }); </script> @endsection