Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/473.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/248.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 自定义闭包函数未定义JS浏览器_Javascript_Php_Html_Iif - Fatal编程技术网

Javascript 自定义闭包函数未定义JS浏览器

Javascript 自定义闭包函数未定义JS浏览器,javascript,php,html,iif,Javascript,Php,Html,Iif,我有一个非常简单的html页面,我将此脚本放在最后: <?php echo $this->Html->script(['studiomain.js']); ?> </html> 但当页面加载完毕时,我的窗口中没有studiomain: window.studiomain => undefined. 我认为问题在于renderModal函数:如果我删除它,一切都好。 我错过了什么 ****更新**** 根据以下建议,我认为问题在于加载脚本和将引用传递给

我有一个非常简单的html页面,我将此脚本放在最后:

<?php echo $this->Html->script(['studiomain.js']); ?>
</html>
但当页面加载完毕时,我的窗口中没有studiomain:

window.studiomain => undefined.

我认为问题在于renderModal函数:如果我删除它,一切都好。 我错过了什么

****更新****

根据以下建议,我认为问题在于加载脚本和将引用传递给JQuery的顺序


我还发现,将(jQuery)和非($)传递给IIF是有效的。

我猜您正在尝试实现模块化模式

在代码中,您需要返回函数中的所有内容,否则没有返回的所有代码都将处于私有状态

修复您的代码,您需要返回
窗口。studiomain
作为参数,您的代码将工作,
$
未定义,因此它未存储在窗口对象中

window.studiomain=window.studiomain | |(函数($){
设_dataTable='';
设_modalTemplates={};
让_webroot='studioasq';
函数setDataTable(t,options={}){
_数据表=$(t);
if(typeof$(t).DataTable=='function'){
options.language={
“url”:“/”+_webroot+“/js/datatable/i18n/意大利语.json”
}
$(t).数据表(选项);
}
}
函数setModal(键=“”,模板=“”){
_modalTemplates[键]=模板;
}
函数renderModal(键,数据={}){
如果(_modalTemplates[key]!==未定义){
让copy=_modalTemplates[key];
Object.key(数据).forEach((key)=>{
replace(新的RegExp(“{{{value+“}}}”,“g”),data[key]);
})
}
返回$(“#”+键);
}
返回{
可设置数据表,
setModal,
渲染模型
}
})(窗口:studiomain);

控制台日志(studiomain)我不确定
php
部分。但是对于
js
部分,你能检查一下你的函数是否返回了什么吗?嗨,脚本加载正确,它返回了3个函数。你可以尝试
window.studiomain
code在studiomain.js之后调用,然后在window.load之后调用这个函数-A-我无法重现该问题。我认为问题在于RenderModel函数:如果我将其全部删除就可以了。请尝试使用名称空间返回方法,如果您认为这会导致错误,则返回调试方法。谢谢,它可以工作。但是如何传递$(jquery?)giuseppe,您可以使用另一个参数
window.studiomain => undefined.