将onclick事件分配给全局变量-javascript

将onclick事件分配给全局变量-javascript,javascript,variables,global-variables,Javascript,Variables,Global Variables,我在“mypoll”班上有很多课。以下是我的js代码: var mypoll=[]; $(document).ready(function (){ mypoll=document.getElementsByClassName("mypoll"); }); for(var t=0; t<mypoll.length; t++) { mypoll[t].getElementsByClassName("deletePoll")[0].onclick=(functio

我在“mypoll”班上有很多课。以下是我的js代码:

var mypoll=[];

$(document).ready(function (){      
    mypoll=document.getElementsByClassName("mypoll");
});

for(var t=0; t<mypoll.length; t++) {
    mypoll[t].getElementsByClassName("deletePoll")[0].onclick=(function() {
        var currentI = t;
        return function() { 
            deletedMyPoll(currentI);
        };
    })();
}
function deletedMyPoll(i){
    var a=document.getElementsByClassName("mypoll")[0].innerHTML;
    alert(a);
}
我在我的项目中有完全相同的代码(它又大又复杂,我不能在这里全部发布),但它不起作用

不过,它在JSFIDLE上工作

javascript中的全局变量有问题吗?我可以那样使用它们吗


谢谢

如果要使用jQuery,不妨使用它:

$(".mypoll").on('click', '.deletePoll', function () {

});

for循环在dom准备就绪之前运行

$(document).ready(function (){      
    mypoll=document.getElementsByClassName("mypoll");

    for(var t=0; t<mypoll.length; t++) {
        mypoll[t].getElementsByClassName("deletePoll")[0].onclick=(function() {
            var currentI = t;
            return function() { 
                deletedMyPoll(currentI);
            };
        })();
    }

});
$(文档).ready(函数(){
mypoll=document.getElementsByClassName(“mypoll”);

对于(var t=0;t从正确缩进开始,意思是下次发布问题之前应该改进代码格式;)你为什么不与我们共享小提琴?对!你的小提琴不工作,因为你没有让它使用jQuery。看看控制台,你会看到
uncaughtreferenceerror:$未定义
请阅读错误消息。它与是否设置了
mypoll
无关。如果是这样,则
>for
循环不会迭代,因为
mypoll.length
将为0。错误消息是“无法设置未定义的单击的属性”。唯一使用的
onclick
位置是
mypoll[t]。getElementsByClassName(“deletePoll”)[0]
,这意味着
未定义的
我将一些循环放在$(文档)中。准备好了吗(function(){它成功了!我必须为每个循环都这样做吗?我这么说是因为所有的循环都已经在一个大的$(document).ready(function(){事实上,这与您的poll、document有关。如果实际元素还不在dom上,getElementsBy*将不起作用。您尝试过使用我的确切代码吗?我使用的代码与您的几乎相同。我将重试并返回给您。因此,我们确信js在创建之前到达dom?即使我有完整的代码(不仅仅是循环本身)用$(document)包装。准备好了吗(?谢谢好的,但我根本不知道jquery,我会把整个项目搞砸。我能用你写的东西在onclick函数中传递一个参数吗?
$(document).ready(function (){      
    mypoll=document.getElementsByClassName("mypoll");

    for(var t=0; t<mypoll.length; t++) {
        mypoll[t].getElementsByClassName("deletePoll")[0].onclick=(function() {
            var currentI = t;
            return function() { 
                deletedMyPoll(currentI);
            };
        })();
    }

});