Onclick无法正常工作(Javascript和Dom)

时间:2014-01-27 13:02:44

标签: javascript dom onclick

我试图让最后一个功能起作用,但事实并非如此。我认为这与lank beeing一个阵列有关吗?

var lank = document.createElement("a"); //Skapa en länk som heter lank
lank.setAttribute("class", "visa");
lank.setAttribute("href", "#");
var lankTN = document.createTextNode("Läs mer"); // Skapa en textnod som heter lankTN
lank.appendChild(lankTN); //Sätt in lankTN i lank

window.onload = function uppstart(){
    var texterna = document.getElementsByClassName("show");
    for (var i = 0; i < texterna.length; i++) {
        texterna[i].style.visibility = "hidden";
        document.getElementsByClassName("post")[i].appendChild(lank.cloneNode(true));
    }
}

function visaText(){
    alert("Hej");
}

lank.onclick = visaText;

2 个答案:

答案 0 :(得分:0)

我只需在for循环中创建lank节点,然后在那里添加onclick。如果我们有一个小提琴并且看到你的HTML也会有所帮助,但我猜对了,我希望这就是你的意思:http://jsfiddle.net/yf9Wa/1/

从小提琴中,这对你有用吗?

window.onload = function uppstart() {
    var texterna = document.getElementsByClassName("show");
    var posterna = document.getElementsByClassName("post");
    for (var i = 0; i < texterna.length; i++) {
        var lank = document.createElement("a"); //Skapa en länk som heter lank
        lank.setAttribute("class", "visa");
        lank.setAttribute("href", "#");
        lank.setAttribute("id", "lank" + i);
        var lankTN = document.createTextNode("Läs mer"); // Skapa en textnod som heter lankTN
        lank.appendChild(lankTN); //Sätt in lankTN i lank
        lank.onclick = function(){
            alert("Hej, jag är: " + this.id);
        };

        texterna[i].style.visibility = "hidden";
        posterna[i].appendChild(lank);
        console.log(i);
    }
}

如果您担心表现,请不要。

答案 1 :(得分:0)

cloneNode似乎不会复制事件处理程序。出于安全考虑,可能是设计。将事件处理程序附加到克隆节点,而不是lank

var cloned = lank.cloneNode(true);
cloned.onclick = visaText;
document.getElementsByClassName("post")[i].appendChild(cloned);
相关问题