Avatar billede superjma Nybegynder
18. april 2005 - 00:10 Der er 10 kommentarer

Objekt-attributter

Hej..

Jeg benytter mig af et træ fra http://www.destroydrop.com/javascripts/tree/

Det fungerer ret godt. Problemet er nu at jeg har brug for at vide hvilket objekt der befinder sig ex. over det valgte element.

Så vidt jeg kan gennemskue har jeg dermed behov for at kalde getSelected() og få ID'et for det valgte element.

Nu opstår problemet så. Jeg skal have PID for det valgte element. Og gennemløbe aNodes i PID til jeg finder det forrige element.

Hvordan gør jeg dette? Kan det gøres enklere, hører jeg selvfølgelig også gerne andre løsninger.
Avatar billede olebole Juniormester
18. april 2005 - 00:32 #1
<ole>

Du kunne jo prøve noget à la:
  alert(document.getElementById(ID).previousSibling.innerHTML)

- hvor ID er en variabel, der indeholder den fundne id på det element, du ønsker at finde det foregående til

/mvh
</bole>
Avatar billede olebole Juniormester
18. april 2005 - 00:58 #2
- men der er i øvrigt nogle seriøse problemer med scriptet. Som det vises bag det link, du skriver, er scriptet brugt under XHTML. Som man kan se i JS-koden, lukkes alle enkelt-tags da også med ' />' - hvilket er et must under XHTML - men er ulovligt under HTML.

Problemet er bare, at scriptet ikke kan bruges i forbindelse med XHTML, da hele scriptet er bygget op med henblik på, at træet skrives ud med document.write - hvilket er en HTML-only metode.

Desuden er der en del misforstået JS i scriptet. Jeg kan se, forfatteren bl.a. bruger JavaScript pseudo-protokollen i en event-handler:
  onclick="java script: ......"
- hvilket er en total misforståelse.
Avatar billede busschou Praktikant
18. april 2005 - 06:31 #3
ole >> Du skriver det ikke kan bruges i forbindelse med XHTML . Men hvordan kan det så være at deres eksemple valideres som korrekt XHTML 1.0 Strict ?
http://validator.w3.org/check?uri=http%3A%2F%2Fwww.destroydrop.com%2Fjavascripts%2Ftree%2Fexample%2F
Avatar billede superjma Nybegynder
18. april 2005 - 10:43 #4
alert(document.getElementById(ID).previousSibling.innerHTML) dur ikke.

Jeg skal ikke bruge innerHTML'en til noget som helst. Jeg skal bruge ID'et. For det førliggende element.

Med ID mener jeg ID'et i træet ikke i diven, som bare er autonummereret uden hensynstagen til de id'er man opretter træet med.
Avatar billede olebole Juniormester
18. april 2005 - 11:00 #5
busschou >> At et dokument validerer mod XHTML er ingen garanti for, at det kan parses som et XHTML-dokument. Det kan næsten ingen XHTML-dokumenter på WWW - over 90% parses som dårlig og fejlfyldt HTML. Prøv at læse:
    http://www.eksperten.dk/artikler/537
    http://www.eksperten.dk/artikler/538

superjma >> Jeg er jo godt klar over, du ikke har brug for indholdet ... men hvad får du fat i? Du skal jo have fat i et element for at få fat i dets ID  :)
Avatar billede superjma Nybegynder
18. april 2005 - 11:35 #6
Tager man det andet element i listen tror jeg man skal bruge flg.

alert(document.getElementById('sd2').previousSibling.innerHTML);

Outputtet for denne er mystisk nok blank.

Ex.
        d.add(0,-1,'My example tree');
        d.add(100,0,'Node 1','example01.html');
        d.add(2,0,'Node 2','example01.html');
        d.add(3,100,'Node 1.1','example01.html');
        d.add(8,100,'Node 1.2','example01.html');

OUTPUT =
<div class="dtree">
    <div class="dTreeNode">
        <img id="id0" src="img/base.gif" alt="" />My example tree</a></div>
        <div id="dd0" class="clip" style="display:block;">
            <div class="dTreeNode">
                <a href="java script: d.o(1);"><img id="jd1" src="img/plus.gif" alt="" /></a>
                <img id="id1" src="img/folder.gif" alt="" />
                <a id="sd1" class="node" href="example01.html" onclick="java script: d.s(1);">Node 1</a>
            </div>
            <div id="dd1" class="clip" style="display:none;">
                <div class="dTreeNode">
                    <img src="img/line.gif" alt="" />
                    <a href="java script: d.o(3);"><img id="jd3" src="img/plus.gif" alt="" /></a>
                    <img id="id3" src="img/folder.gif" alt="" />
                    <a id="sd3" class="node" href="example01.html" onclick="java script: d.s(3);">Node 1.1</a>
                </div>
                <div id="dd3" class="clip" style="display:none;">
                    <div class="dTreeNode">
                        <img src="img/line.gif" alt="" /><img src="img/line.gif" alt="" />
                        <a href="java script: d.o(5);"><img id="jd5" src="img/plusbottom.gif" alt="" /></a>
                        <img id="id5" src="img/folder.gif" alt="" />
                        <a id="sd5" class="node" href="example01.html" onclick="java script: d.s(5);">Node 1.1.1</a>
                    </div>
                    <div id="dd5" class="clip" style="display:none;">
                        <div class="dTreeNode">
                            <img src="img/line.gif" alt="" /><img src="img/line.gif" alt="" /><img src="img/empty.gif" alt="" /><img src="img/joinbottom.gif" alt="" /><img id="id6" src="img/page.gif" alt="" />
                            <a id="sd6" class="node" href="example01.html" onclick="java script: d.s(6);">Node 1.1.1.1</a>
                        </div>
                    </div>
                </div>
                <div class="dTreeNode">
                    <img src="img/line.gif" alt="" /><img src="img/joinbottom.gif" alt="" /><img id="id8" src="img/page.gif" alt="" />
                    <a id="sd8" class="node" href="example01.html" onclick="java script: d.s(8);">Node 1.2</a>
                </div>
            </div>
            <div class="dTreeNode">
                <img src="img/join.gif" alt="" /><img id="id2" src="img/page.gif" alt="" />
                <a id="sd2" class="node" href="example01.html" onclick="java script: d.s(2);">Node 2</a>
            </div>
Avatar billede olebole Juniormester
18. april 2005 - 11:48 #7
Prøv:
  alert(document.getElementById('sd2').parentNode.previousSibling.id.split("dd")[1]);

Der er dog sikkert mulighed for at gøre det på en mere elegant måde - direkte på objektet (formodentlig via array'et 'aNodes' og property'en 'selectedNode') - men jeg har ikke tid til at kopiere filer og teste  :)
Avatar billede superjma Nybegynder
18. april 2005 - 13:46 #8
Det virker ikke. Den returnerer 1. Istedet for 100 som den burde.
Avatar billede busschou Praktikant
14. juli 2005 - 19:10 #9
superjma >> kommet videre ? lukketid ? ;o)
Avatar billede superjma Nybegynder
14. juli 2005 - 19:37 #10
Nope fandt aldrig en løsning. Så er lidt stucked.
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