Avatar billede henan Nybegynder
16. januar 2006 - 11:31 Der er 13 kommentarer

Find parentElement

Så er den gal igen! Denne gang skal jeg bruge lidt (meget?) hjælp til at finde et parentElement. Jeg har følgende i en funktion:

var sel = document.selection;
range = sel.createRange();
var element = range.parentElement();
var cellIndexet = element.cellIndex;

Men ud over cellIndex skal jeg også bruge rowIndex. Hvordan gør jeg det?

Jeg skal bruge funktionen til at merge to celler.
Avatar billede phliplip Nybegynder
16. januar 2006 - 11:36 #1
Du kan vel "slette" den cell du vil merge med og så sætte element.colSpan eller element.rowSpan
Avatar billede phliplip Nybegynder
16. januar 2006 - 11:39 #2
Her finder du rowIndex:
http://www.w3schools.com/htmldom/dom_obj_tablerow.asp

Nyttige:
http://www.w3schools.com/htmldom/dom_obj_table.asp
http://www.w3schools.com/htmldom/dom_obj_tabledata.asp

Havde jeg være dig havde jeg nok arbejdet lidt med tableElement.rows[] og tableElement.cells[] evt. nogen foreach noget.. bruger det selv i et projekt jeg har gang i!
Avatar billede henan Nybegynder
16. januar 2006 - 11:39 #3
Det kan jeg sikkert ;-) Hvordan?
Avatar billede henan Nybegynder
16. januar 2006 - 11:40 #4
Ok, der postede vi på samme tid. Jeg kigger på det om lidt. Takker!
Avatar billede henan Nybegynder
16. januar 2006 - 11:45 #5
Så vidt jeg kan se skal jeg bruge en id på den tabel, jeg arbejder med? Hvordan får jeg fat i den eller hvordan kan jeg undgå at skulle bruge den? Jeg tror det er der mit problem ligger!
Avatar billede phliplip Nybegynder
16. januar 2006 - 11:47 #6
<table id="mittable">

table = document.getElementById('mittable');

Så kan du bruge table.rows[] og table.cells[]
Avatar billede henan Nybegynder
16. januar 2006 - 11:50 #7
Undskyld! Skrev vist noget sludder før. Har desværre ikke mulighed for at anvende en id i tabellen så derfor skal jeg bruge en metode uden id.
Avatar billede roenving Novice
16. januar 2006 - 16:32 #8
Så f.eks.

var table = document.getElementsByTagName('table')[0];
Avatar billede henan Nybegynder
17. januar 2006 - 00:54 #9
Er ikke helt sikker. Hvad hvis der fx er flere tabeller? Hvordan kan jeg så være sikker på, at det er den rigtige jeg har fat i?
Avatar billede olebole Juniormester
17. januar 2006 - 01:06 #10
<ole>

Du kan komme ret langt ved at sætte dig ind i DOM. Her er et lille eksempel på et elements 'siblings' (søskende):

<script type="text/JavaScript">
function foo() {
    var sel = document.selection;
    range = sel.createRange();
    var element = range.parentElement();
    element.previousSibling.setAttribute("colSpan", 2);
    element.parentNode.removeChild(element.nextSibling);
}
document.onmouseup = foo;
</script>

<div style="width:600px;height:500px;border:1px solid red" contenteditable>
    <table cellspacing="10" cellpadding="10" border="1">
    <tbody>
    <tr>
        <td>Venstre celle</td>
        <td>Midter celle</td>
        <td>Højre celle</td>
    </tr>
    <tr>
        <td>Venstre celle</td>
        <td>Midter celle</td>
        <td>Højre celle</td>
    </tr>
    <tr>
        <td>Venstre celle</td>
        <td>Midter celle</td>
        <td>Højre celle</td>
    </tr>
    </tbody>
    </table>
</div>

Prøv kun at udvælge den midterste celle ... det er et meget simpelt eksempel  :)

/mvh
</bole>
Avatar billede olebole Juniormester
17. januar 2006 - 01:13 #11
Desuden kan du bruge:
    element.parentNode -> tr-elementet
    element.parentNode.parentNode -> tbody-elementet

- og husk, at en tabel altid indeholder mindst ét tbody-element ... hvadenten du selv har skrevet det, eller ej  ;o)

Samt:
    element.cellIndex
    element.parentNode.rowIndex

- og nok også:
    element.parentNode.parentNode.getElementsByTagName("tr") // Array af rækker i tbody'en
Avatar billede henan Nybegynder
17. januar 2006 - 02:24 #12
olebole: Takker mange gange! Vil meget gerne lære mere om DOM-scripting, men mangler et sted hvor det er uddybet hvad de forskellige ting betyder og hvordan det fungerer. Anbefalinger? Evt. bøger?
Avatar billede olebole Juniormester
17. januar 2006 - 03:28 #13
Tutorial-sites sucks - som oftest - og bøger bliver hurtigt forældede. Det bedste er faktisk at kikke i 'de store' referencer:

W3C's DOM-recomandationer vedr. script-DOM bindinger:
    DOM1: http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/ecma-script-language-binding.html
    DOM2: http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html
    DOM3: http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/ecma-script-binding.html

Kik i de to første under 'Object Document'. Her finder du alle DOM-dokumentets properties og metoder. Derefter kan du sikkert også få noget udaf DOM3-papiret. Jeg er kender, det kan virke lidt overvældende i begyndelsen - men det betaler sig, at prøve at 'stave sig igennem'  :)

De to andre 'store' er (med masser af eksempler):
    MS: http://msdn.microsoft.com/library/default.asp?url=/workshop/author/dhtml/reference/dhtml_reference_entry.asp
- kik i menuen til venstre.

- og (også med masser af eksempler):
    Mozilla/Gecko: http://developer.mozilla.org/en/docs/Gecko_DOM_Reference
- check også her menuen ude til venstre af.

Læg mærke til, at hos MS opgiver man, om den pågældende property/metode tilhører en gældende standard - og evt. hvilken ... kik forneden under 'Standards Information'  ;o)

Find evt. en property eller metode på W3C og se, hvordan den bruges på et af de to andre sites. Der er den ret let at finde, når man først har navigeret lidt rundt.
Som sagt kan det virke overvældende, men det betaler sig i længden at lære at læse standarder og referencer  =)

Nu skulle der ikke være grund til, du hænger på gadehjørnerne og slår gamle damer ned med din bon, de næste par måneder  ;D
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