jQuery,将我的jquery代码移动到外部文件时出现引用错误

时间:2014-05-14 21:51:46

标签: javascript jquery

当我在</body>结束之前通过内联html放置它时,此函数有效。但是一旦我把它移到js / main.js它再也不起作用了。

内联:

<script>
var rowNum = 0;
    function addRow(frm) {
        rowNum ++;
        var html = $('.addphone').html();
        jQuery('.phone_adds').append(html);
    }

    function removeRow(rnum) {
        jQuery('#rowNum'+rnum).remove();
    }
</script>

与外部.js:

$(function() {

.....other functions...

    var rowNum = 0;
    function addRow(frm) {
        rowNum ++;
        var html = $('.addphone').html();
        jQuery('.phone_adds').append(html);
    }

    function removeRow(rnum) {
        jQuery('#rowNum'+rnum).remove();
    }

});

错误讯息:Uncaught ReferenceError: addRow is not defined

帮助?这有什么不对?

1 个答案:

答案 0 :(得分:2)

您将函数封装在包装器中:

$(function() {

    var rowNum = 0;
    function addRow(frm) {
        rowNum ++;
        var html = $('.addphone').html();
        jQuery('.phone_adds').append(html);
    }

    function removeRow(rnum) {
        jQuery('#rowNum'+rnum).remove();
    }
});

当你这样做时,你定义的函数实际上是包装器的子函数(“$”函数),因此,当它从这个包装器调用外部时,该函数不存在。

“内联”有效,因为你的函数是全局的并且可以在任何地方看到(不在另一个函数中)。

我建议删除函数定义的包装器,然后将函数调用留在$()包装器中。