在javascript中,如何在for循环中分配onclick?

在javascript中,如何在for循环中分配onclick?,javascript,html,Javascript,Html,整个过程都在一个js文件中,并立即从我的html文件链接 按照计划,所有的按钮都应该出现并且可以点击,但实际上只有一个按钮是可见的,当我点击它时,这个按钮不起作用 当我创建了很多面向div的按钮时,我希望我可以运行for loop,并能够将它们分配为可点击的,而不是写尽可能多的行 在javascript中,如何在for循环中分配onclick 您正在调用函数而不是分配它 function Mclick(id){alert(id);} 当然,现在您的函数将接收一个事件参数,而不是id(在循环中传

整个过程都在一个js文件中,并立即从我的html文件链接

按照计划,所有的按钮都应该出现并且可以点击,但实际上只有一个按钮是可见的,当我点击它时,这个按钮不起作用

当我创建了很多面向div的按钮时,我希望我可以运行for loop,并能够将它们分配为可点击的,而不是写尽可能多的行


在javascript中,如何在for循环中分配onclick

您正在调用函数而不是分配它

function Mclick(id){alert(id);}
当然,现在您的函数将接收一个事件参数,而不是id(在循环中传递id是一件非常痛苦的事情;最简单的修复方法是不用费心尝试)。但是它还将附加元素作为
this
,这很方便:

getElementById(cbox[i].id).onclick = Mclick;
其他意见:

  • 如果未指定包含已知HTML的字符串,则应尽量避免使用
    innerHTML
    。让你不用担心逃跑。改用
    textContent
  • 分配给
    onclick
    有点不灵活;您只能以这种方式分配一个单击处理程序,并且很难注意到您是否意外地重写了现有的处理程序。使用
  • getElementById(element.id)
    肯定应该等同于
    element
  • 不要在JavaScript中使用HTML注释!:)他们只为……工作。。。奇怪的向后兼容性原因。JavaScript注释可以是
    /…
    /**/
  • 最好不要将函数名大写,除非它应该是构造函数;您可能会注意到,SO的高亮显示为
    Mclick
    绿色,因为它认为这是一个类名
  • 因此,我最终会:

    function Mclick() {
        alert(this.id);
    }
    
    函数initnav(){
    var cbox=document.getElementsByClassName('box');
    对于(变量i=0;i
    因此基本上不调用for循环,因为for循环在函数中。如果要调用for循环中的所有变量和语句,请将语句放入函数中,并在函数外部但在脚本内部调用函数。

    第1步是在JavaScript代码中使用JavaScript注释。非常感谢Eevee。这很有帮助。这并不能真正回答问题。对不起,你需要什么
    function Mclick() {
        alert(this.id);
    }
    
    function initnav() {
        var cbox = document.getElementsByClassName('box');
        for(var i = 0; i < cbox.length; i++) {
            cbox[i].textContent = cbox[i].id;
            cbox[i].addEventListener('click', alert_id);
        }
    }
    
    function alert_id(event) {
        alert(this.id);
    }