Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在javascript中从外部访问函数中的函数_Javascript_Jquery - Fatal编程技术网

在javascript中从外部访问函数中的函数

在javascript中从外部访问函数中的函数,javascript,jquery,Javascript,Jquery,我有一个嵌套函数,我想从外部调用它 var _Config = ""; var tourvar; function runtour() { if (_Config.length != 0) { tourvar = $(function () { var config = _Config, autoplay = false, showtime, step

我有一个嵌套函数,我想从外部调用它

var _Config = "";
var tourvar;
function runtour() {
    if (_Config.length != 0) {
        tourvar = $(function () {
            var config = _Config,
                autoplay = false,
                showtime,
                step = 0,
                total_steps = config.length;
            showControls();
            $('#activatetour').live('click', startTour);
            function startTour() {
            }
            function showTooltip() {
            }
        });
    }
}
function proceed() {
    tourvar.showTooltip();
}
$(document).ready(function () {
    runtour();
});

我希望通过tourvar.showTooltip()调用它;但是我似乎错了:)我怎样才能使showTooltip()从函数外部可用?

因为我以前的答案确实是个头脑发热的答案,所以我决定删除它并提供另一个答案:

var _Config = "";
var tourvar;

// Module pattern
(function() {
    // private variables
    var _config, autoplay, showtime, step, total_steps; 

    var startTour = function() { };

    var showTooltip = function() { };

    // Tour object constructor
    function Tour(config) {
        _config = config;
        autoplay = false;
        step = 0;
        total_steps = _config.length;

        // Provide the user with the object methods
        this.startTour = startTour;
        this.showTooltip = showTooltip;
    }

    // now you create your tour
if (_Config.length != 0) {
        tourvar = new Tour(_Config);
    }
})();

function proceed() {
    tourvar.showTooltip();
}
$(document).ready(function () {
    runtour();    
});

$
的作用是什么?是因为您使用了jQuery还是其他库?在这种情况下,它是哪个库?只需在外部声明函数即可。没有理由在其他函数中声明它。
tourvar.showTooltip=function(){…}
(尽管您必须使用本机JS对象,而不是jQuery包装的对象)。仅供参考:
$(function(){})
$(document.ready(function(){})的缩写。因此,当您执行
tourvar=$(function(){
)时,您正在将
tourvar
设置为
$(document)
。感谢您的响应…我做了一些轻微的更改,但没有定义一个巡更。如果(_Config.length!=0){tourvar=new Tour(_Config);tourvar.showControls()},我将移动在函数runtour中,它应该启动巡更,showcontrols函数应该显示控件。我在函数tour()中声明了showcontrols变量。Anway,当我运行tour()时我得到旅游是未定义的。排序它…99%你的代码…唯一的其他事情是因为我已经编辑了一些…谢谢你的帮助…现在更了解这一点。很高兴它有帮助。只是为了让其他人澄清,问题是旅游()构造函数在模块外部不可见。我修改了示例,现在它应该尽可能易于使用,请务必查看:
function outerFunction() {
    window.mynestedfunction = function() {
    }
}
mynestedfunction();