将onclick事件分配给全局变量-javascript
我在“mypoll”班上有很多课。以下是我的js代码:将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
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);
};
})();
}
});