如何触发Javascript中其他事件之后创建的元素上的事件?

如何触发Javascript中其他事件之后创建的元素上的事件?,javascript,html,css,Javascript,Html,Css,我复制了windows计算器。我被“记忆标签”卡住了 我需要在三个按钮上创建点击事件:mcm+M-如下(屏幕右上角)。 问题是,每次单击主计算器上的“MS”(屏幕左侧,主按钮上方)时,这些按钮(以及周围的所有元素)都会随后创建 我想迭代这些按钮,并根据文本内容创建if语句,但我不确定如何定位这些按钮,因为它们还不存在 例如,如果我尝试以下操作: const buttonTest = document.getElementsByClassName("btnsave"); co

我复制了windows计算器。我被“记忆标签”卡住了

我需要在三个按钮上创建点击事件:mcm+M-如下(屏幕右上角)。

问题是,每次单击主计算器上的“MS”(屏幕左侧,主按钮上方)时,这些按钮(以及周围的所有元素)都会随后创建

我想迭代这些按钮,并根据文本内容创建if语句,但我不确定如何定位这些按钮,因为它们还不存在

例如,如果我尝试以下操作:

const buttonTest = document.getElementsByClassName("btnsave");
console.log(buttonTest.textContent);

无论console.log在函数内部还是外部,我都会得到“未定义”的结果。

您可以直接在创建按钮的位置添加单击事件处理程序,如下所示:

var clickHandler=function(){
控制台日志(“点击按钮”);
};
var button=document.createElement(“按钮”);
button.textContent=“测试”;
addEventListener(“单击”,clickHandler);
document.getElementById(“容器”).appendChild(按钮)

您可以在创建按钮的位置直接添加单击事件处理程序,如下所示:

var clickHandler=function(){
控制台日志(“点击按钮”);
};
var button=document.createElement(“按钮”);
button.textContent=“测试”;
addEventListener(“单击”,clickHandler);
document.getElementById(“容器”).appendChild(按钮)


按钮测试将是一个数组,而不是元素。查看console.log的Ok(buttonTest),我得到了html集合。现在我想迭代每个项目,并根据它们的属性/索引运行eventListener。问题是,当我使用console.log(buttonTest.item(0))检查第一个项时,我得到了“null”。我缺少什么?
buttonTest
将是一个数组,而不是一个元素。查看console.log的Ok(buttonTest),我得到了html集合。现在我想迭代每个项目,并根据它们的属性/索引运行eventListener。问题是,当我使用console.log(buttonTest.item(0))检查第一个项时,我得到了“null”。我错过了什么?谢谢你的帮助,但我的问题不同。用你的例子来解释:我需要“测试”按钮上的点击事件生成其他三个按钮,迭代它们并运行三个不同的addevent侦听器。我用另一个片段更新了我的答案。这就是你想要的吗?有点。让我们假设有几个ul具有您在上面创建的相同元素(uls的htmlCollection)。我如何确保当我按下按钮1时,“button 1 cliked”实际添加到“current”ul中,而不是添加到htmlcollection的第一个子级?创建单击处理程序时,您可以传递对所需所有元素的引用。您可以将其视为处理程序的“上下文”。我使用事件委托进行了分类。谢谢你,谢谢你的帮助,但我的问题不同。用你的例子来解释:我需要“测试”按钮上的点击事件生成其他三个按钮,迭代它们并运行三个不同的addevent侦听器。我用另一个片段更新了我的答案。这就是你想要的吗?有点。让我们假设有几个ul具有您在上面创建的相同元素(uls的htmlCollection)。我如何确保当我按下按钮1时,“button 1 cliked”实际添加到“current”ul中,而不是添加到htmlcollection的第一个子级?创建单击处理程序时,您可以传递对所需所有元素的引用。您可以将其视为处理程序的“上下文”。我使用事件委托进行了分类。非常感谢。
const buttonTest = document.getElementsByClassName("btnsave");
console.log(buttonTest.textContent);