Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.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_Html - Fatal编程技术网

为什么我的锚不能触发这个javascript对象?

为什么我的锚不能触发这个javascript对象?,javascript,html,Javascript,Html,我有一个带有链接javascript对象的页面: //the constructor function function NewsScroller() { } //now put some config objects using the JSON structure NewsScroller.prototype.config = { serviceUrl : '/NewsProvider.svc/rest/GetNews/', pageIndex : 0 } //th

我有一个带有链接javascript对象的页面:

//the constructor function
function NewsScroller() {

}


//now put some config objects using the JSON structure
NewsScroller.prototype.config = {
    serviceUrl : '/NewsProvider.svc/rest/GetNews/',
    pageIndex : 0
}


//the argumented constuctor for this object
NewsScroller.prototype.init = function () {


    this.getNews(this.config.pageIndex);
    console.log(this.config.pageIndex);

}

NewsScroller.prototype.decreasePage = function () {

    console.log('current page index ' + this.config.pageIndex);

}
然后我有了页面就绪声明:

<script>
        $(document).ready(function () {

            var newsScrollerForPage = new NewsScroller();
            newsScrollerForPage.init();

            newsScrollerForPage.decreasePage();

        });

    </script>

$(文档).ready(函数(){
var newscrollerformage=news scroller();
NewsScrollerFormage.init();
NewsScrollerFormage.decreasePage();
});
这将产生以下结果:

当前页索引0

我想从锚标记调用函数,因此我有:

<div class="scroller-left">
    <a id="scroller-left-a" href="javascript:newsScrollerForPage.decreasePage();">
        <img src="/Images/Left-Scroller.jpg"/>
    </a>
</div>

但当我点击锚时,我得到:

未定义NewsScrollerFormage


为什么会这样?当然,我应该能够像在.ready方法中那样调用对象和函数?

如果在ready函数中使用局部作用域(通过使用“var”)定义NewsScrollerFormage,则不能在其外部使用它,除非在使用它的同一作用域中定义函数(作用域是从定义函数的位置计算的,而不是从调用函数的位置计算的)

您可以通过删除之前的var(使其在范围内更具全局性而非局部性)来快速解决问题,但我不认为这是最佳解决方案

最好像这样连接锚:

    $(document).ready(function () {

        var newsScrollerForPage = new NewsScroller();
        newsScrollerForPage.init();

        newsScrollerForPage.decreasePage();

        document.getElementById("scroller-left-a").onclick=function()
        {
             newsScrollerForPage.decreasePage();
             return false;
        }

    });

并从HTML元素中删除href。

如果使用本地作用域在ready函数中定义NewsScrollerFormage(通过使用“var”),则不能在该函数之外使用它,除非在使用它的同一作用域中定义函数(作用域是从定义函数的位置计算的,而不是从调用函数的位置计算)

您可以通过删除之前的var(使其在范围内更具全局性而非局部性)来快速解决问题,但我不认为这是最佳解决方案

最好像这样连接锚:

    $(document).ready(function () {

        var newsScrollerForPage = new NewsScroller();
        newsScrollerForPage.init();

        newsScrollerForPage.decreasePage();

        document.getElementById("scroller-left-a").onclick=function()
        {
             newsScrollerForPage.decreasePage();
             return false;
        }

    });

从HTML元素中删除href。

我认为,由于关闭,即使在返回后,页面也可以访问该函数中的变量。但是,是的,关于clousre的事情,你是对的,它是如何工作的?它只是一个有访问权的函数吗?通过将a从链接更改为锚,它也可以被完全删除,点击监听器放在图像上。或者,如果监听器成功执行,A应该有一个href值,该值或多或少做监听器在取消导航时所做的事情。我认为,由于关闭,即使在返回该函数后,页面也可以访问该函数中的变量?是的,你说得对,关于clousre的事情,它是如何工作的?它只是一个有访问权的函数吗?通过将a从链接更改为锚,它可能会被完全删除,单击侦听器会放在图像上。或者,a应该有一个href值,该值或多或少执行侦听器对导航取消的操作d如果侦听器成功执行。