Avatar billede kla Nybegynder
25. september 2004 - 20:07 Der er 6 kommentarer og
1 løsning

Hvorfor kan jeg ikke bruge last() i IE ?

Hej

Jeg står og skal have fundet sidste element i en struktur og jeg har fundet følgende : /history/target[last()] som skulle virke men IE siger den ikke kender "last()"
Her er hele min JS line
oNode = root.selectSingleNode("/history/target[last()]"); 
Håber nogen kan hjælpe mig :-)
/skylark
Avatar billede roenving Novice
26. september 2004 - 02:03 #1
-- jeg kender heller ikke selectSingleNode, så du er ude i noget, som ikke understøttes i bare browsere fra sidste år (hvis det er ECMA-script til browsere !-)

-- men hvadfor bruger du ikke bare:

root.childNodes[root.childNodes.length-1];

-- hvor jeg går ud fra at root er et defineret objekt, hvis du er i javascript til andet end browsere, kan der selvfølgelig være voldsomt anderledes tilgange !o]
Avatar billede kla Nybegynder
26. september 2004 - 08:01 #2
okay ... lidt mere kode ;-)

      oStack = new ActiveXObject("Microsoft.XMLDOM");
      oStack.async = false; 
      oStack.loadXML(stackDoc.value);
      stackRoot = oStack.documentElement;   

      oParentNode = stackRoot.selectSingleNode("history");   
     
      objNewTarget = oStack.createElement("target"); 
   
      objIdAttr = oStack.createAttribute("ID"); 
      objNewTarget.setAttribute("ID", new Date().valueOf()); 
     
      oParentNode.appendChild(objNewTarget);   

############# hertil virker det fint ##############################

  //oParentNode = stackRoot.selectSingleNode("/history/target[last()]"); 
  oParentNode = stackRoot.selectSingleNode("history/target[1]"); 
  //oParentNode = stackRoot.selectSingleNode("//*[last()]")

############# her springer kæden af ....  ##############################

mit ønske er at ud af alle de <target> som er der hver med et unikt id skal jeg have fat i den sidste tilkommende .... nogen forslag ????
Avatar billede roenving Novice
26. september 2004 - 08:16 #3
Principielt er id'er ikke gyldige, hvis de starter med et ciffer, som du her sætter det til, men det er jo ikke problemet her, men kan du måske:

oTags = document.getElementsByTagName("target");
oParentNode = oTags[oTags.length-1];

-- man kunne selvfølgelig også aflæse alle id'er og finde ud af hvilken som havde den største numeriske værdi, men det ser ikke ud til at være nødvendigt !-)
Avatar billede kla Nybegynder
26. september 2004 - 08:48 #4
Det ser sgu ud til at du fik løst mit problem.... *hehe* ihverfald som jeg kender det lige nu :-) .... så hvis du lige opretter et svar får du fortjenesten :-)
Avatar billede roenving Novice
26. september 2004 - 08:50 #5
Velbekomme '-)
Avatar billede roenving Novice
26. september 2004 - 09:06 #6
-- og tak for point ;~}
Avatar billede olebole Juniormester
27. september 2004 - 18:23 #7
<ole>

Vid du bruge XPath, skal du specificere det. Desuden bør du ikke bruge rene tal til ID'er, hvis du vil undgå problemer.

function addElm() {
    var XMLStr = "<dataset><history><target id='a1'>Nummer et</target><target id='a2'>Nummer to</target><target id='a3'>Nummer tre</target></history></dataset>";
   
    var oStack = new ActiveXObject("Microsoft.XMLDOM");
    oStack.async = false; 
    oStack.loadXML(XMLStr);
    oStack.setProperty("SelectionLanguage", "XPath");
   
    stackRoot = oStack.documentElement;
   
    oParentNode = oStack.selectSingleNode("//history"); 
    objNewTarget = oStack.createElement("target"); 
   
    objIdAttr = oStack.createAttribute("ID"); 
    objNewTarget.setAttribute("ID", "dato" + new Date().valueOf()); 
   
    oParentNode.appendChild(objNewTarget);
   
    oParentNode = stackRoot.selectSingleNode("history/target[last()]");
   
    alert(oParentNode.attributes(0).text)
}
</script>

<button onclick="addElm()">addElm</button>

/mvh
</bole>
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester