为什么我的锚不能触发这个javascript对象?
我有一个带有链接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
//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如果侦听器成功执行。