【发布时间】:2012-07-30 17:54:00
【问题描述】:
编辑#2: 问题不存在了。这是某种范围界定问题。但现在它正在工作。对于给您带来的不便,我深表歉意。
在我的脚本的某些部分,有一个事件委托并通过 id 指定目标。但是当我运行它时。 if(evt.target.id == ("subtaskSubmit" + subtaskCounter)) 行似乎根本不起作用。这是我的代码:
var subtaskCounter = 0;
aWholeTask.addEventListener("click", function(evt){
//other event targets specifications ..
if(evt.target.id == "divide"){
var subtaskInput = document.createElement("input"),
subtaskSubmit = document.createElements.button("submit"), // this is a special function i've made, don't bother about it. I've used it all over the place and it's working normally.
subtaskContainer = document.createElement("p");
subtaskContainer.style.marginLeft = "40px";
subtaskInput.id = "subtaskInput" + (++subtaskCounter);
subtaskInput.type = "text";
subtaskSubmit.id = "subtaskSubmit" + subtaskCounter;
subtaskContainer.appendChildren(subtaskInput,subtaskSubmit);
aWholeTask.appendChild(subtaskContainer);
}
if(evt.target.id == ("subtaskSubmit" + subtaskCounter)){
//this event is the one that not working when i press on that element
alert("hello");
}
});
编辑: 我做了一些修改来调试代码,结果很奇怪:
var subtaskCounter = 0;
aWholeTask.addEventListener("click", function(evt){
//other event targets specifications ..
if(evt.target.id == "divide"){
var subtaskInput = document.createElement("input"),
subtaskSubmit = document.createElements.button("submit"), // this is a special function i've made, don't bother about it. I've used it all over the place and it's working normally.
subtaskContainer = document.createElement("p");
subtaskContainer.style.marginLeft = "40px";
subtaskInput.id = "subtaskInput" + (++subtaskCounter);
subtaskInput.type = "text";
subtaskSubmit.id = "subtaskSubmit" + subtaskCounter;
subtaskContainer.appendChildren(subtaskInput,subtaskSubmit);
aWholeTask.appendChild(subtaskContainer);
}
if(evt.target.innerHTML == "Submit"){
alert(evt.target.id == ("subtaskSubmit" + subtaskCounter));
//And this surprisingly returns false !
}
});
那么为什么evt.target.id == ("subtaskSubmit" + subtaskCounter) 返回false?
【问题讨论】:
-
为什么要有自调用函数作为事件处理函数?
-
我只是不希望这两个事件的变量对其余事件可见。
-
我明白了,还有其他处理程序...每个 id 一个
-
嗯,不,我的意思是我想将它隐藏在
aWholeTask点击事件中的任何其他 if(..){..} 语句中。对不起,我有点初学者:) -
我的意思是,如果您在
aWholeTask.addEventListener(...)中有其他自调用函数块,那么它是有意义的
标签: javascript onclick dom-events event-delegation targeting