ChuangYu1897 2019-10-22 09:56 采纳率: 0%
浏览 751

js 添加事件监听调用的函数传递参数是变量时是undefined

var Screenname=['Screen11','Screen12','Screen13','Screen21','Screen22','Screen23','Screen31','Screen32','Screen33'];
var ScreenShow  //显示九个屏幕,用于选择
for(var i=0;i<8;i++){
                ScreenShow=document.getElementById("Screen11").cloneNode(true);
                ScreenShow.setAttribute("class","Screen_Status1");              
                ScreenShow.addEventListener("click",function(){fun_Screencontrol(Screenname[i+1]);//这一句和下一句两种写法哪种更规范?这里的变量Screenname[i+1]可以传递到函数中吗?
                });
                //ScreenShow.setAttribute("onclick","fun_Screencontrol(" + Screenname[i+1] + ")");
                Screenspace.appendChild(ScreenShow);
            }
function fun_Screencontrol(Screen){
                alert("Screen")//显示[object HTMLDivElement]
                alert("Screenname[3]" + Screenname[3]);//显示Screeen21
                if(Screen == Screenname[3])
                {
                    alert("为什么不执行");//这一句不执行
                }
                    if(Screen == Screen21)
                {
                    alert("执行");//这一句执行
                }

叙述的有点乱

  • 写回答

1条回答 默认 最新

  • _鹿慕溪水 2019-10-22 10:22
    关注

    在for循环中把你要传的参数定义出来,再传参,

    var screen = Screenname[i+1];
    
    

    还有一点疑问,你数组的第一个下标的值不需要传递?所以才i+1? 那为什么不直接i=1呢?

    评论

报告相同问题?

悬赏问题

  • ¥15 github符合条件20分钟秒到账,github空投 提供github账号可兑换💰感兴趣的可以找我交流一下
  • ¥50 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥200 uniapp长期运行卡死问题解决
  • ¥15 latex怎么处理论文引理引用参考文献
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?