2014-01-27 131 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);