Wie kann ich eine Reihe von (Kopien von) Objekten aus dem ursprünglichen DOM beibehalten, so behält das Set trotz DOM-Änderungen seine ursprünglichen Werte bei?Javascript: Wie kann ich eine Variable aus DOM-Änderungen beibehalten
Zum Beispiel:
<body class="toc endnotes">
Und führt ein Skript mit diesem:
function runFunxForBodyClasses()
{
var bodyClass = document.getElementsByTagName("body")[0].className.trim();
if(bodyClass){
// multiple body classes are space-delimited per html/css
var bodyClasses = bodyClass.split(" ");
if(bodyClasses.length > 0){
var h2s = document.getElementsByTagName("h2");
var anchors = getAnchors();
// debugging
alert(anchors.length);
// functions called below, affect the DOM and return void
if(bodyClasses.indexOf('toc') > -1){
addToc(h2s);
}
if(bodyClasses.indexOf('endnotes') > -1){
addEndNotes(anchors);
}
// ... other irrelevant ones here
}
}
}
function getAnchors()
{
return document.getElementById("main").getElementsByTagName("a");
}
function addEndNotes(anchors)
{
if(anchors.length < 1){
return;
}
// debugging
alert(anchors.length);
// ...
Mit der Variablen anchors
, ich versuche, eine Liste der Anker Objekte zu erhalten, wie es, wenn die Seite war kam vom Server und verwendet das als Eingabe für .
Was addEndNotes()
bekommt aber ist eine Liste von Anker-Objekten wie von geändert. addToc()
fügt Links auf h2 in einem Inhaltsverzeichnis, sagen 'n' Elemente. Es verwendet keine Variable anchors
noch etwas mit dem gleichen Namen.
Noch die zweite Warnung meldet eine Anzahl von Elementen in anchors
das ist (Originalnummer + 2n): Diese Liste wird von Änderungen im DOM nach anchors
wird deklariert und bevor es erneut verwendet wird.
Ursprünglich war die Initialisierung von anchors
im globalen Bereich, aber ich habe von einer Seite über den Variablenbereich gelernt, dass es erst später initialisiert wird, wenn es außerhalb einer Funktion ist. Also habe ich den Anker in diese Funktion gebracht, aber das hat keinen Unterschied im Ergebnis gemacht.
Re eine andere Sprache Ich würde sagen, ich will Kopien anstelle von Referenzen, wie macht man das in JS?
Was ist in 'addToc'? –
Können Sie ein Diagramm bereitstellen? – danny117