dgog: Absoluten Index einer Node finden

Beitrag lesen

Hallo,

okay, wieder was gelernt. Ich wusste nicht, dass "var" die Variable lokal definiert und ohne var Global anlegt. Erklärt natürlich das Problem.

Hier ist nun mein aktualisierter Quelltext:

var nodeIndex;  
function getChildNodeIndex(parent, node) {  
  nodeIndex++;  
  for(var i = 0; i < parent.childNodes.length; i++)  
    if(parent.childNodes[i] == node || getDomChilds(parent.childNodes[i], node))  
      return true;  
  return false;  
}  
function getNodeIndex(node) {  
  nodeIndex = -1;  
  if(getChildNodeIndex(document, node))  
    return nodeIndex;  
  else  
    return -1;  
}  
var selection = window.getSelection();  
if(selection.getRangeAt && selection.rangeCount > 0)  
  var range = selection.getRangeAt(0);  
else  
  var range = null;  
var anchorNode = getNodeIndex(selection.anchorNode);  
var anchorOffset = selection.anchorOffset;  
var focusNode = getNodeIndex(selection.focusNode);  
var focusOffset = selection.focusOffset;

Stürzt zumindest nicht mehr ab, allerdings klappt der Vergleich

parent.childNodes[i] == node

nicht. Es gibt im gesamten DOM leider keinen Treffer. Es muss doch irgendwie möglich sein, die anchorNode aus der Selektion irgendwie wieder zu finden.

Die Umgebung ist Chrome in einer von mir festgelegten Version. Wichtig ist halt nur, dass der nodeIndex für das selbe Element im selben HTML Dokument wieder den selben Index ergibt. Der Undo-Stack hat für jeden Undo Schritt halt die Daten + Selektion.

Vielleicht mache ich bei meinem Vergleich ja noch etwas falsch, eine Idee dazu?