首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何获取按钮并对其应用事件

如何获取按钮并对其应用事件
EN

Stack Overflow用户
提问于 2021-02-08 22:27:34
回答 4查看 70关注 0票数 1

我使用这段代码在按钮被单击时添加一个函数,但它不起作用。

代码语言:javascript
复制
function onClick(){
    console.log("Button pressed.");
    localStorage.counter = ++counter;
    console.log(counter);
}

window.addEventListener('load', function() {
    console.log("Loaded");
    var buttons = document.getElementsByClassName("v-btn v-btn--small theme--dark orange");
    console.log(buttons);
    console.log("buttons.length:")
    console.log(buttons.length);
    var i;
    for(i = 0;i < buttons.length;i++){
        buttons[i].onclick = onClick();
        console.log("Event added")
    }
}, false);

当页面加载时,我只能在控制台中获得以下内容:Chrome Console output

当我点击这些按钮时,也没有任何反应。如果我在chrome中使用断点对其进行调试,则输出会发生变化,并且会显示按钮为空。

编辑:问题是它甚至没有进入for循环。

EDIT2:调用load事件时不显示按钮。window.addEventListener('load')执行得太早

Load is called before the page is loaded

EN

Stack Overflow用户

发布于 2021-02-09 23:01:23

为了确保您的脚本在所有其他脚本执行后运行,您可以使用setInterval()。我将其设置为100毫秒(您可以在底部看到。因此,您的代码将在页面加载后等待100ms,然后执行。

正如在其他答案中所建议的,在将onClick分配给元素的事件处理程序时,不应该调用它。所以,我也改变了这一点。

代码语言:javascript
复制
function onClick(){
    console.log("Button pressed.");
    localStorage.counter = ++counter;
    console.log(counter);
}


window.addEventListener('load', function() {

  var i = setInterval(function ()
  {
    clearInterval(i);
    console.log("Loaded");
    var buttons = document.getElementsByClassName("v-btn v-btn--small theme--dark orange");
    console.log(buttons);
    console.log("buttons.length:")
    console.log(buttons.length);
    var i;
    for(i = 0;i < buttons.length;i++){
        buttons[i].onclick = onClick;
        console.log("Event added")
    }
  }, 100);

}, false);
票数 0
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66103521

复制
相关文章

相似问题

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