首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Javascript动态插入DOM元素自动触发onclick事件

Javascript动态插入DOM元素自动触发onclick事件
EN

Stack Overflow用户
提问于 2019-11-03 18:51:29
回答 2查看 91关注 0票数 1

我一直在为一个我正在做的项目做一个自动完成功能。我希望用户能够点击的自动完成,这将查询更多有关该产品的信息。当为动态创建的DOM元素分配onclick事件时,称onclick事件自动触发。

现在,我在js小提琴中复制了这个“错误”:https://jsfiddle.net/50y4ma8h/2/

HTML

代码语言:javascript
运行
复制
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Title of the document</title>
</head>

<body>

  <div id="results">

  </div>

</body>

</html>

JS

代码语言:javascript
运行
复制
var resultsElement = document.getElementById("results");
var div = document.createElement("DIV");
div.append("Hey");
div.onclick = querySomething();

resultsElement.innerHTML = div.outerHTML;

function querySomething() {
    alert("hey");
}

我不明白为什么分配给oncllick事件的函数会自动调用。

如能提供任何帮助,我将不胜感激:)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-11-03 18:54:41

div.onclick = querySomething();

是将结果 of querySomething函数分配给处理程序,而不是函数本身。

你可能是说:

div.onclick = querySomething;

还请注意,将innerHTML移到其他地方不会带来绑定的onclick侦听器,因此resultsElement不会附加此事件。

票数 3
EN

Stack Overflow用户

发布于 2019-11-03 19:09:55

由于您没有将创建的div真正附加到resultsElement中,所以不能将eventListener附加到它,所以我会稍微修改代码。

代码语言:javascript
运行
复制
var resultsElement = document.getElementById("results");
var div = document.createElement("DIV");
div.append("Hey");
div.addEventListener('click', querySomething);
resultsElement.appendChild(div);



function querySomething() {
    alert("hey");
}
代码语言:javascript
运行
复制
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Title of the document</title>
</head>

<body>

  <div id="results">

  </div>

</body>

</html>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58683536

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档