所以我正在编写一些与Facebook API一起使用的功能。我之前设置了onclick属性,通过取父母并说出parent.innerHTML += "<a onclick = 'test("+parameter+")'>Previous</a>"
的内容并且工作正常。但是我想让它更安全,更符合标准,所以它的风格如下:
function myMethod(link){
...
FB.api(link, function(response){
...
if(value != null){
var prev = document.createElement("a");
prev.innerText = "previous";
prev.setAttribute("id", "previous");
//prev.onclick = function(){test(this);}; doesn't work here
document.getElementById("facebook-photos").appendChild(prev);
}
//some other code (loops and stuff) including this
for(...){
var container = document.createElement("div");
container.classList.add("container");
container.classList.add("thing");
container.onclick = function(){test(this);}; // works here
}
//
if(document.getElementById("previous")){
document.getElementById("previous").onclick = function(){test(this);}; //works here
}
}
}
由于某种原因,每当我尝试使用它时,单击该元素什么也不做。检查元素显示没有&#34; onclick&#34;字段但在控制台中显示元素显示onclick字段不为null。没有任何东西覆盖元素,我已经尝试过它作为div和按钮。当我尝试先做document.getElementById(&#34;之前的#34;)时,它仍然无法正常工作。 为什么会这样?它只是Javascript的异步性质吗?中间的赋值虽然在元素创建后相对较快,但在开头的那个却没有。