我正在尝试让我的谷歌地图显示多个位置,但如下所示的onclick没有进入我的功能b。我究竟做错了什么?感谢
的Javascript
function b(){
dlat=40.856771;
dlng=0.578294;
alert(dlat);
getLoc();
}
function init() {
document.getElementById("click").onclick = b;
}
window.onload = init
HTML
<ul data-role="listview" data-split-icon="star" data-split-theme="a">
<li><a href="#1"><h1>task1</h1></a><a href="#popup" id="click" data-rel="popup" data-position-to="window" data-transition="fade"> </a></li>
</ul>
<div data-role="popup" id="popup" data-overlay-theme="a" data-theme="a" data-corners="false" data-tolerance="15,15">
<a href="#" data-rel="back" data-role="button" data-theme="a" data-icon="delete">Close</a>
<iframe src="map.html" width="320" height="320" seamless></iframe>
</div>
答案 0 :(得分:0)
在没有看到您的整个情况的情况下,事件委派可以解决您的问题。基于我的最小信息,我使用事件委派来完成函数调用:http://jsfiddle.net/uufS3/1/
document.getElementById("container").addEventListener("click", b, false);
function b(){
dlat=40.856771;
dlng=0.578294;
alert(dlat);
getLoc();
}
当然,这意味着您需要在页面上拥有某种预先存在的元素。我添加了一个容器div,但它可能(并且可能应该是)body标签本身。
如果这是一个大型应用程序,此解决方案也可以帮助解决内存泄漏问题。
如果您的应用/网站需要支持较旧的IE版本,除了addEventListener之外,还要查看like this内容。
您是否必须拥有init功能?它比你列出的更多吗?如果没有,我建议放弃它,因为它不是解决这个特定问题所必需的。似乎window.onload在你的情况下是不必要的,除非(就像我说的那样)该函数执行其他未列出的事情。
更新 Here is more info on how to use logic in event delegation...假设您最终将其附加到正文标记,则您需要过滤点击次数。