javascript – 自定义js函数’无法读取属性’缩放’未定义’
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 自定义js函数’无法读取属性’缩放’未定义’,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2232字,纯文字阅读大概需要4分钟。
内容图文
![javascript – 自定义js函数’无法读取属性’缩放’未定义’](/upload/InfoBanner/zyjiaocheng/733/eb2eadb51c7f40d694025a6f4111e1be.jpg)
在关注tuts的google地图教程后,我决定构建一些自定义函数. Link
在’controlZoom’函数中,我试图设置一些自定义控件但是我无法访问’this.gMap’:
controlZoom:function(){
var plusZoom = document.getElementsByClassName('icon-plus-sign')[0],
minusZoom = document.getElementsByClassName('icon-minus-sign')[0],
count = this.gMap.getZoom();
plusZoom.addEventListener('click', function() {
this.gMap.zoom(count++);
});
minusZoom.addEventListener('click', function() {
this.gMap.zoom(count--);
});
}
我可以访问以下内容:
console.log(count);
但不是在’click’event里面.
我在这里调用自定义函数:link
当我尝试单击时,我在控制台中收到以下错误:
‘无法读取属性’缩放’未定义’
解决方法:
事件监听器中的“this”可能是单击的加/减按钮.您可以使用’self’变量来解决此问题:
controlZoom:function(){
var self = this;
var plusZoom = document.getElementsByClassName('icon-plus-sign')[0],
minusZoom = document.getElementsByClassName('icon-minus-sign')[0],
count = this.gMap.getZoom();
plusZoom.addEventListener('click', function() {
self.gMap.zoom(count++);
});
minusZoom.addEventListener('click', function() {
self.gMap.zoom(count--);
});
}
或者使用.bind:
controlZoom:function(){
var plusZoom = document.getElementsByClassName('icon-plus-sign')[0],
minusZoom = document.getElementsByClassName('icon-minus-sign')[0],
count = this.gMap.getZoom();
plusZoom.addEventListener('click', function() {
this.gMap.zoom(count++);
}.bind(this));
minusZoom.addEventListener('click', function() {
this.gMap.zoom(count--);
}.bind(this));
}
这些修复假设controlZoom中的’this’是具有gMap的对象!我认为是,因为你说this.gMap.getZoom()行返回正确的计数.所以我的两个建议都应该有效,但如果没有,请尝试添加调试
console.debug(this)
检查’this’是否符合预期.
关于使用的说明
是一个运算符,count将递增计数并返回.但传递给函数的值将是在递增之前的count.您可以通过以下控制台会话说服自己:
var n = 0
function report(p) { console.log(p) }
report(n++)
0
你用n调用’report’函数,你可能会认为它可能会打印出’1′.实际上它实际打印出’0′.这是因为n在递增之前被传递到报告中.
在您的情况下,第一次调用缩放(计数)函数时,实际上是使用现有的count值调用它,然后才会计数递增.所以看起来好像需要两次点击才能放大.安全的方法是:
plusZoom.addEventListener('click', function() {
count++;
this.gMap.zoom(count);
}.bind(this));
然后,在将其传递给缩放功能之前,您将确保计数增加.
内容总结
以上是互联网集市为您收集整理的javascript – 自定义js函数’无法读取属性’缩放’未定义’全部内容,希望文章能够帮你解决javascript – 自定义js函数’无法读取属性’缩放’未定义’所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。