Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/456.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/72.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在单击事件中显示主体和单击元素的ID_Javascript_Html - Fatal编程技术网

Javascript在单击事件中显示主体和单击元素的ID

Javascript在单击事件中显示主体和单击元素的ID,javascript,html,Javascript,Html,我有一个js函数,比如check(val)。我称之为身体上的点击事件和一个标签。当我点击body时,它正确地显示body元素的id。但是,当我点击时,它会显示和身体的ID 我只想显示单击时的id和主体的单击事件,以及要执行的其他一些操作 我的示例HTML代码: <body id="body" onclick="check(this.id);"> <a href="#" id="ele" onclick="check(this.id)">Hello</div&

我有一个js函数,比如check(val)。我称之为身体上的点击事件和一个标签。当我点击body时,它正确地显示body元素的id。但是,当我点击时,它会显示和身体的ID

我只想显示单击时的id和主体的单击事件,以及要执行的其他一些操作

我的示例HTML代码:

<body id="body" onclick="check(this.id);">
    <a href="#" id="ele" onclick="check(this.id)">Hello</div>
</body>

您获得这两个ID是因为当您单击锚定时,您也在单击主体,因为锚定是主体元素的子元素。

您获得这两个ID是因为当您单击锚定时,您也在单击主体,因为锚定是主体元素的子元素。

重要注意事项:单击锚点,您也在单击主体

像这样使用

  <body id="body" onclick="check(this);">

    <a href="#" id="ele" onclick="check(this);">Hello</a>
    </body>

重要提示:当你点击锚时,你也在点击身体

像这样使用

  <body id="body" onclick="check(this);">

    <a href="#" id="ele" onclick="check(this);">Hello</a>
    </body>

每个浏览器处理冒泡事件的方式都不同。有些会同时显示,有些只显示链接。您可以更改函数以适应每个单击的元素:

function check(val)
{
    alert("Clicked element type is: " + val.nodeName);
}

这样,您就不需要任何id检测,因为您可以检查节点本身的类型。

每个浏览器处理冒泡事件的方式都不同。有些会同时显示,有些只显示链接。您可以更改函数以适应每个单击的元素:

function check(val)
{
    alert("Clicked element type is: " + val.nodeName);
}

这样,您就不需要任何id检测,因为您可以检查节点本身的类型。

您需要使用
event.stopPropagation()
方法
停止事件的传播。史蒂芬托马斯在评论你的问题时已经提到了这一点

试试这个

HTML标记:

<body id="body" onclick="check(event,this.id);">
    <a href="#" id="ele" onclick="check(event,this.id)">Hello</div>
</body>
function check(event, val) {
    if (val == "ele") {
        alert("element is clicked");
        event.stopPropagation();  //here we stop propagation of the event
    } else if (val == "body") {
        alert("Body is clicked");
    }
}
看这个


我希望这能帮助您……

您需要使用
event.stopPropagation()
方法
停止事件的传播。史蒂芬托马斯在评论你的问题时已经提到了这一点

试试这个

HTML标记:

<body id="body" onclick="check(event,this.id);">
    <a href="#" id="ele" onclick="check(event,this.id)">Hello</div>
</body>
function check(event, val) {
    if (val == "ele") {
        alert("element is clicked");
        event.stopPropagation();  //here we stop propagation of the event
    } else if (val == "body") {
        alert("Body is clicked");
    }
}
看这个


我希望这能帮助您……

请参阅。关于事件处理的其他文章也很好,您应该阅读它们。请参阅。关于事件处理的其他文章也很好,你应该阅读它们。我想在
body
的情况下,这是真的,但是你可能有两个元素没有相互重叠,单击其中一个元素仍然会触发它们各自的处理程序。我想在
body
的情况下,这是真的,但是您可能有两个元素彼此不重叠,单击其中一个元素仍然会触发每个元素的处理程序。