2014-01-27 86 views
0

我想让最后一个功能工作,但事实并非如此。我认为这与阵列中的一些干扰有关?Onclick无法正常工作(Javascript和Dom)

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; 
+1

究竟是什么工作? – mzzzzb

+1

仅仅是你忘记将创建的锚附加到身体上了吗? document.body.appendChild(平直); – Esko

+0

该功能未启动。没有提示框。 – Delal

回答

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); 
    } 
} 

如果你担心性能,不要。

+0

DURR这里是一个jsfiddle:http://jsfiddle.net/yf9Wa/1/ – Nenotlep

+0

也,我会强烈推荐学习jQuery,使这样的事情变得更容易和更好。 – Nenotlep

+0

http://jsfiddle.net/S8UEv/ – Delal

0

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

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