Ich habe zwei Funktionen erstellt erweiterten Ansichten eines Monats im Archiv Abschnitt meines Blogs zu laden, wenn es Link ist angeklickt wird:Funktioniert getElementById mit Elementen, die mit Javascript erstellt wurden?
// Load open view of a month in the Archive section
function loadMonth(date) {
// Remove other open month
removeMonth();
// Hide opening month's link
// Define variable to hold month anchor tag
var monthLink = document.getElementById(date);
monthLink.style.display = "none"; // Hide month anchor
// Define new open month node and its attributes
var openMonth = document.createElement("div");
openMonth.setAttribute("id", "openMonth");
openMonth.innerHTML = "Testing one, two, three.";
// Insert open month
// Define a variable to hold the archive Div node
var archive = document.getElementById("archive");
// Insert the open month in the archive node before it's link
archive.insertBefore(openMonth,monthLink);
return;
}
// Close full view of a month and replace with respective link
function removeMonth() {
// Define global function vars
var archive = document.getElementById("archive"); // Define a var to hold the archive Div node
var openMonth = document.getElementById("openMonth"); // Define var to hold the open month Div node
// Get date of full view month for replacement anchor tag where ID = date
var month = openMonth.getElementsByTagName("span")[0].innerHTML; // Define var to hold the name of the open month
var date = (new Date(month + " 15, 2008").getMonth() + 1); // Define var to hold the numerical equivalent of the month
var year = archive.getElementsByTagName("h3")[0].innerHTML.split(" "); // Define var to hold the year being displayed in the archive
date = year[1] + "" + date; // Change date var to string and insert year
// Remove the open month
archive.removeChild(openMonth);
// Show Link for that month
document.getElementById(date).className = "big"; // Fixes display error when anchor has class firstLink
document.getElementById(date).style.display = "inline"; // Returns link from display "none" state
return;
}
Die Funktionen, wenn sie auf den ursprünglichen statischen Inhalten, aber wenn ein zweiten laufen arbeiten Link wird im Archiv angeklickt, sie tun nichts. Ich frage mich, ob vielleicht, weil die Elemente, die von meinen Funktionen erstellt wurden, nicht von document.getElementById aufgerufen werden kann. Vielleicht sollte eine andere Methode zum Zugriff auf diese Knoten verwendet werden, oder vielleicht "Dokument" durch etwas ersetzen, das auch auf Javascript-Elementen funktioniert?
Jeder Rat würde sehr geschätzt werden. Vielen Dank.
half Können Sie ein funktionierendes Beispiel für Code schreiben (zum Beispiel eines, das das Problem zeigt) irgendwo (zB hier http://pastebin.me/)? Wenn Sie Ihren Code betrachten, glaube ich, dass Ihr Ansatz ein allgemeines Missverständnis ist. – Tomalak