未捕获的ReferenceError:未定义'function1'

时间:2016-09-01 18:48:52

标签: javascript

我在HTML页面中定义了两个脚本。我从附加到Submit按钮的onclick事件调用'function2'脚本。当我点击提交按钮时,我会收到uncaught reference error - function1 is not defined

function1从网址中提取变量(我在页面的网址中包含以下变量:?m=1&u=2&f=3)。

function2将url变量分配给局部变量,然后将这些局部变量指定为3个隐藏表单字段的值(字段ID:msg,mem和frm)。

我添加了vars以显示在console.log中,但由于函数未定义,所以它们从未进行过...

任何想法我做错了什么?

<script language="javascript">
function function1(param) {
    var pattern = new RegExp('[?&]' + param + '((=([^&]*))|(?=(&|$)))', 'i');
    var mz = window.location.search.match(pattern);
    return mz && (typeof(mz[3]) === 'undefined' ? '' : mz[3]);
}
</script>

<script language="javascript">
function function2() {  
    var mm = (function1('m'))();
    var uu = (function1('u'))();
    var ff = (function1('f'))();
    document.getElementById("msg").value=mm;
    document.getElementById("mem").value=uu;
    document.getElementById("frm").value=ff;
    console.log("mm:", mm);
    console.log("uu:", uu); 
    console.log("ff:", ff);  
    }
</script>

1 个答案:

答案 0 :(得分:1)

IIFE(立即调用函数表达式)如:

(function1('m'))();

首先执行function1,然后JS尝试从function1调用返回的值,但它没有返回函数,因此出错。

要解决此问题,只需删除IIFE,即:

mm = function1('m');