通过id获取元素无效

Get element by id not working

本文关键字:无效 元素 获取 id 通过      更新时间:2023-09-26

我试图让我的谷歌地图显示几个位置,但如下所示的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>

事件委托可以解决您的问题,而无需查看整个情况。根据我所拥有的最小信息,我得到了使用事件委托工作的函数调用: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之外,还可以看看这样的东西。

必须有init函数吗?它的功能是否比你列出的更多?如果没有,我建议放弃它,因为它对解决这个特定问题没有必要。看起来像窗户。onload在你的情况下是不必要的,除非(像我说的)该函数做其他未列出的事情。

UPDATE这里是关于如何在事件委托中使用逻辑的更多信息…假设您最终将其附加到body标记上,则需要过滤单击。