Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/87.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 找出使用纯JS单击的DOM元素_Javascript_Html_Dom - Fatal编程技术网

Javascript 找出使用纯JS单击的DOM元素

Javascript 找出使用纯JS单击的DOM元素,javascript,html,dom,Javascript,Html,Dom,我有一个带有文本的HTML文档。我想完成的是,当您单击div元素时,将显示该div的id 我试过这个: window.onload=function(){ associateIds(); 点击(); } 函数AssociateId(){ var all=document.getElementsByTagName(“*”); 变量id=-1; for(var elem=0;elem

我有一个带有文本的HTML文档。我想完成的是,当您单击
div
元素时,将显示该
div
id

我试过这个:

window.onload=function(){
associateIds();
点击();
}
函数AssociateId(){
var all=document.getElementsByTagName(“*”);
变量id=-1;
for(var elem=0;elem

主标题
标题

爱丽丝开始厌倦了坐在她姐姐旁边的银行,厌倦了无所事事:有一两次她偷看了她姐姐正在读的那本书,但里面没有图片和对话,“一本书有什么用呢?”她想
爱丽丝:“没有照片或对话吗?”。

因此,她在自己的脑海里思考(她也在思考,因为炎热的天气让她感到非常困倦和愚蠢),制作一条雏菊链的乐趣是否值得费心站起来摘雏菊,突然一只小白兔 粉红色的眼睛从她身边掠过。没有什么比这更了不起的了;爱丽丝也不认为听到兔子自言自语“哦,天哪!哦,天哪! 我要迟到了!”(当她事后仔细考虑时,她想到她本应该对此感到惊讶,但当时一切似乎都很自然)。但是当兔子从背心口袋里拿出一块手表时, 爱丽丝看了看,然后急急忙忙地站了起来,因为她的脑海里闪过一个念头:她从来没有见过一只兔子,口袋里有一个背心口袋,或是一只手表要拿出来,她好奇地跑了 它穿过田野,幸运的是刚好及时看到它从树篱下的一个大兔子洞里钻了出来。

下来,下来,下来。秋天永远不会结束“我不知道现在我已经走了多少英里了?”她大声说我一定在接近地球中心的地方。让我想想:我想那将是四千英里以下——”(因为, 你看,爱丽丝在教室里的课上学了好几件这类的东西,虽然这不是一个炫耀自己知识的好机会,因为没有人听她的,但这仍然是一个很好的练习 (爱丽丝不知道纬度是多少,也不知道经度是多少,但她认为这是一个很好的词语)。

添加
while
循环以获取父
div


您必须添加
parentNode
,因为当您单击目标时,目标不是具有
id
div
,而是儿童的某个人,因此您必须添加
parentNode
并循环元素,直到您获得具有
id
的父
div
,请参见以下代码:

function clicked() {
    document.body.onclick = function(evt) {
        var evt = window.event || evt; //window.event for IE
        if (!evt.target) {
            evt.target = evt.srcElement; //extend target property for IE
        } 

        var parent = evt.target.parentNode;

        while (parent.tagName != 'DIV') {
            parent = parent.parentNode;
        }
        alert(parent.id);
    }
}

希望这有帮助。

解决此问题的最简单方法是在每个
div
上附加一个单击处理程序。您可以在分配ID时执行此操作

您可以为每个
div
分配相同的函数作为单击处理程序。函数可以查询
this.id
以获取被单击元素的
id
,因为
this
就是被单击的元素

在下面的代码片段中,我通过仅迭代
div
元素而不是所有页面元素简化了代码

window.onload=function(){
AssociatedAndClickHandler();
}
功能点击(事件){
警报(this.id);
}
函数AssociatedAndClickHandler(){
var divs=document.getElementsByTagName('div'),
numDivs=divs.length;
对于(变量i=0;i

主标题
标题

爱丽丝开始厌倦了坐在她姐姐旁边的银行,厌倦了无所事事:有一两次她偷看了她姐姐正在读的那本书,但里面没有图片和对话,“一本书有什么用呢?”她想
爱丽丝:“没有照片或对话吗?”。

因此,她在自己的脑海里思考(她也在思考,因为炎热的天气让她感到非常困倦和愚蠢),制作一条雏菊链的乐趣是否值得费心站起来摘雏菊,突然一只小白兔 粉红色的眼睛从她身边掠过。没有什么比这更了不起的了;爱丽丝也不认为听到兔子自言自语“哦,天哪!哦,天哪! 我要迟到了!”(当她事后仔细考虑时,她想到她本应该对此感到惊讶,但当时一切似乎都很自然)。但是当兔子从背心口袋里拿出一块手表时, 爱丽丝看了看,然后急急忙忙地站了起来,因为她的脑海里闪过一个念头:她从来没有见过一只兔子,口袋里有一个背心口袋,或是一只手表要拿出来,她好奇地跑了 它穿过田野,幸运的是刚好及时看到它从树篱下的一个大兔子洞里钻了出来。

下来,下来,下来。秋天永远不会结束“我不知道现在我已经走了多少英里了?”她大声说我一定是
alert(evt.target.id);
alert(evt.target.parentNode.id); 
document.body.onclick = function (evt) {
    var evt = window.event || evt; //window.event for IE
    var el = evt.target || evt.srcElement,
        id = el.id;
    while (!id && el.tagName !== 'BODY') {
        el = el.parentNode;
        id = el.id;
    }

    if(typeof id !== 'undefined'){
        alert(id); 
    }

}