2017-07-18 74 views
-3

我在下面的JS中收到'navigateTo is not defined'错误。我很确定我已经通过了功能navigateTo作为openCart()函数的一个参数,所以我不确定哪里出错了?将函数作为参数传递到另一个函数错误

$(function() { 
    var form = $('form#checkout-form'), 
    $sections = $('[data-step]'); 

    function navigateTo(index) { 
     $sections.removeClass('is--active').eq(index).addClass('is--active'); 
    } 
}); 

$(document).on('click', 'nav.main a.cart', function(e) { 
    openCart(); 
}); 
function openCart(navigateTo) { 
    navigateTo(1); 
    disableScroll = false; 
} 
+2

的NavigateTo不在范围之内。把这个功能放在更高的范围内从其他功能调用 –

+3

这是非常简单的事情。这一切都涉及到'范围'。尽管你在'DOM'就绪函数中调用'openCart()','navigateTo()'没有在'openCart()'的范围内定义 – Ionut

回答

1

你的函数openCart应该去里面的DOM准备功能,否则它不会调用函数,你需要回调作为参数navigateTo传递到像openCart(navigateTo)opencart功能另一件事;

$(function() { 
 
    var form = $('form#checkout-form'), 
 
    $sections = $('[data-step]'); 
 

 
    function navigateTo(index) { 
 
    alert(2); 
 
     $sections.removeClass('is--active').eq(index).addClass('is--active'); 
 
    } 
 
    $(document).on('click', 'div', function(e) { 
 
     openCart(navigateTo); 
 
    }); 
 
    function openCart(navigateTo) { 
 
     navigateTo(1); 
 
     disableScroll = false; 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div>hahah</div>

-1

这是一个范围问题。把你的整个剧本封闭起来,你会好起来的;

(function($) { 
    // your script here 
})(jQuery) 

但是在第一个模块周围摆脱$(function() { }

相关问题