我想在全局js中设置我的函数。所以它可以从任何地方调用
我有这个功能:
$(function () {
function formatCurrency(input) {
return input.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, "$1.");
}
});
我把这个功能放在
上C:\ XAMPP \ htdocs中\ mysystem \资源\资产\ JS \ main.js
我在
上添加了这个:<script src="{{URL::asset('/resources/assets/js/main.js')}}"></script>
C:\ XAMPP \ htdocs中\ mysystem \资源\视图\布局\ app.blade
执行时,在控制台上存在如下错误:
我该如何解决?
答案 0 :(得分:2)
您应该将函数定义为窗口对象的方法。
window.formatCurrency = function(input) {
return input.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, "$1.");
}
另一种更干净方式将您的函数定义为名为Utils
的对象的方法,如下所示:
var Utils = (function(){
function formatCurrency(input){
return input.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, "$1.");
}
return {
formatCurrency: formatCurrency
}
}());
这样做,您不会污染全局命名空间。您将只在名为Util的全局命名空间中定义一个变量,该变量将包含一个具有有用功能的obejct,可供应用程序的其他部分使用。因为它是你无法看到后一种方法的好处。但是你可以考虑如果你想使用另外3个函数,它们自己使用2个其他函数作为帮助器。如果是这样的话,你的return语句还会包含3个以上的函数,而我之前提到的2个函数根本就不会出现!
答案 1 :(得分:2)
问题似乎是您使用asset()
错误。
资产是指/public
中的文件。
您应该编译/最小化您的JS用于生产并将其放在/public
中的某个位置,即/public/js/my.js
答案 2 :(得分:0)
您可以像这样定义全局函数
window.formatCurrency = function(input){
return input.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, "$1.");
}
你在ready函数中定义函数($(函数))然后你也必须在ready函数中调用它。因此,最好在就绪函数或自调用函数之外定义它。