javascript - 调用客户端函数

标签 javascript meteor

这段Meteor代码需要调用main.js中定义的header.js中的函数cleanSerializedArray();,这两个文件都在client目录下。

浏览器控制台错误:

Uncaught ReferenceError: cleanSerializedArray is not defined

但是当定义移动到同一个文件“header.js”时,控制台会显示

undefined

为什么会出现这 2 个非预期结果,我希望看到该函数在这两种情况下都能工作?谢谢

'use strict';
Template.header.events({
  'click .mainMenu': function () {
    //control the footer visibility
    if (Session.get('showMainMenu')) {
      Session.set('showMainMenu', false);
    } else {
      console.log(cleanSerializedArray()); //<------- called
      //Meteor.call('storeUserInputs', objArray);
      Session.set('showMainMenu', true);
    }
});

function cleanSerializedArray() {
   return $('form').serializeArray().forEach(function (item) {
    item.value = item.value.replace(/[^0-9a-zA-Z]/g, '');
  });
}

最佳答案

你会得到未定义,因为Array.prototype.forEach始终返回未定义
您可能想将 cleanSerializedArray 函数更改为:

function cleanSerializedArray() {
    var array = $('form').serializeArray();
    array.forEach(function (item) {
        item.value = item.value.replace(/[^0-9a-zA-Z]/g, '');
    });
    return array;
}

至于您的ReferenceError,这通常是由以下两种情况之一引起的:

范围:

window.addEventListener('DOMContentLoaded', function()
{
    function myFunc(){ /* ... */ }

    /* some code that uses myFunc */
});
/* myFunc is not available out here */

时间安排:

window.addEventListener('DOMContentLoaded', function()
{
    window.myFunc = function(){ /* ... */ }

    /* some code that uses myFunc */
});
/* myFunc is not available yet */

由于您似乎仅从事件处理程序调用该函数,因此范围问题比计时问题更有可能。
尝试将函数声明为:

window.cleanSerializedArray = function() {
    // ...
};

关于javascript - 调用客户端函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35951293/

相关文章:

javascript - 如何使用 JS 获取 "active page"状态类

javascript - 同一个 div 的多次迭代?

meteor - 需要在我的 meteor 项目中包含一个帮助程序 html 页面

Jquery问题: Uncaught TypeError: Cannot read property 'createDocumentFragment' of undefined

css - 如何在 Meteor 中只加载一页的 css 文件?

javascript - 如何在 C# 中清除 javascript SessionStorage

javascript - 使用单选按钮更改变量值

javascript - 尽管单击的按钮不是提交按钮,但表单已提交

javascript - 用于创建格式化 XLSX 电子表格的 JS 库

javascript - meteor /Node -gd & ReferenceError : require is not defined