如何在全局设置 javascript 函数?
How can I set javascript function in global?
我想在全局 js 中设置我的函数。所以它可以从任何地方调用
我有这个功能:
$(function () {
function formatCurrency(input) {
return input.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, ".");
}
});
我把函数放在
C:\xampp\htdocs\mysystem\resources\assets\js\main.js
然后我在
上添加:<script src="{{URL::asset('/resources/assets/js/main.js')}}"></script>
C:\xampp\htdocs\mysystem\resources\views\layouts\app.blade
执行时,控制台出现如下错误:
GET http://mysystem.dev/resources/assets/js/main.js 404 (Not Found)
我该如何解决?
你可以像这样定义全局函数
window.formatCurrency = function(input){
return input.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, ".");
}
并且您在 ready function($(function)) 中定义函数,那么您也必须在 ready 函数中调用它。所以最好在就绪函数之外或在自调用函数中定义它。
您应该将函数定义为 window 对象的方法。
window.formatCurrency = function(input) {
return input.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, ".");
}
另一种更干净的方法是将函数定义为名为Utils
的对象的方法,如下所示:
var Utils = (function(){
function formatCurrency(input){
return input.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, ".");
}
return {
formatCurrency: formatCurrency
}
}());
这样做不会污染全局命名空间。您将在名为 Util 的全局命名空间中只定义一个变量,该变量将包含一个具有有用功能的对象,可以被您的应用程序的其他部分使用。事实上,您看不到后一种方法的好处。但是,您可以考虑如果您想使用另外 3 个函数,它们自己使用另外 2 个函数作为助手,那会怎样。如果是这种情况,您的 return 语句还将包含另外 3 个函数,而我之前提到的 2 个函数根本不会被删除!
问题似乎是您使用 asset()
错误。
资产指的是 /public
中的一个文件。
您应该 compile/minimize 用于生产的 JS 并将其放在 /public
中的某处,即 /public/js/my.js
我想在全局 js 中设置我的函数。所以它可以从任何地方调用
我有这个功能:
$(function () {
function formatCurrency(input) {
return input.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, ".");
}
});
我把函数放在
C:\xampp\htdocs\mysystem\resources\assets\js\main.js
然后我在
上添加:<script src="{{URL::asset('/resources/assets/js/main.js')}}"></script>
C:\xampp\htdocs\mysystem\resources\views\layouts\app.blade
执行时,控制台出现如下错误:
GET http://mysystem.dev/resources/assets/js/main.js 404 (Not Found)
我该如何解决?
你可以像这样定义全局函数
window.formatCurrency = function(input){
return input.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, ".");
}
并且您在 ready function($(function)) 中定义函数,那么您也必须在 ready 函数中调用它。所以最好在就绪函数之外或在自调用函数中定义它。
您应该将函数定义为 window 对象的方法。
window.formatCurrency = function(input) {
return input.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, ".");
}
另一种更干净的方法是将函数定义为名为Utils
的对象的方法,如下所示:
var Utils = (function(){
function formatCurrency(input){
return input.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, ".");
}
return {
formatCurrency: formatCurrency
}
}());
这样做不会污染全局命名空间。您将在名为 Util 的全局命名空间中只定义一个变量,该变量将包含一个具有有用功能的对象,可以被您的应用程序的其他部分使用。事实上,您看不到后一种方法的好处。但是,您可以考虑如果您想使用另外 3 个函数,它们自己使用另外 2 个函数作为助手,那会怎样。如果是这种情况,您的 return 语句还将包含另外 3 个函数,而我之前提到的 2 个函数根本不会被删除!
问题似乎是您使用 asset()
错误。
资产指的是 /public
中的一个文件。
您应该 compile/minimize 用于生产的 JS 并将其放在 /public
中的某处,即 /public/js/my.js