Avatar billede medjeti Nybegynder
10. marts 2004 - 00:13 Der er 9 kommentarer og
1 løsning

table.insertRow eller lignende på IE / Mac

HAJHAJ

Jeg skal smide nogle rækker i en tabel på følgende måde:


// Find tabel
var myTable = document.getElementById("myTable");

// Find den rigtige række i tabellen
var placeholderRow = document.getElementById("placeholderRow");
var placeholderIndex = placeholderRow.rowIndex;

// Skab ny række i tabellen på den ønskede placering
myRow = myTable.insertRow(placeholderIndex);

// Skab ny celle
var myCell = document.createElement("td");
myCell.innerText = "Succes!";

// Tilføj den nye celle til rækken
myRow.appendChild(myCell);


Det virker umiddelbart fint på PC (IE, NS, Mozilla) og på NS 7 til Mac, men IE 5.2 på Mac vil ikke være med: Den opretter rækken og cellerne fint, men de ender ude til højre for tabellen istedet for under hinanden som de burde.

Er der nogen der har et fix til ovenstående eller kan komme på en anden måde at gøre det samme på, som virker i v5+ browsere?

Jeg har eksperimenteret lidt med at skabe et TR-objekt og sige table.appendChild(TR), men problemet er at rækken skal tilføjes på en bestemt position i tabellen ("placeholderRow").

På forhånd tak for ethvert forslag!
Avatar billede roenving Novice
10. marts 2004 - 07:54 #1
Absolut utestet !-)

var myCell = document.createElement("td");
var myRow = document.createElement("TR");
myRow.appendChild(myCell);
myCell.innerText = "Succes!";

myTable.insertBefore(myRow,placeholderRow);

-- men disse metoder skulle efter min reference holde i alle v5 og 6-browsere ...
Avatar billede roenving Novice
10. marts 2004 - 07:57 #2
-- dog har jeg haft den irriterende oplevelse, at IE uopfordret kreerede et tbody-element, som kastede sig ind imellem, så de løsninger jeg har fået til at fungere, har måttet være à la:

<table>
  <tbody id="myTable">
    <tr id="placeholderRow">
      <td>&nbsp;</td>
    </tr>
  </tbody>
</table>
Avatar billede medjeti Nybegynder
10. marts 2004 - 13:04 #3
Alrighty, det ser ud til, at insertBefore() var en lille succeshistorie: Rækken bliver nu ploppet ind på det rigtige sted i tabellen. Woohoo!

Mine trængsler stopper nu ikke der: Det jeg i virkeligheden prøver at gøre er at tilføje 6 celler til rækken, hvoraf to af dem skal spænde over to kolonner.
cell1.colSpan = 2 virker storartet - bortset lige fra vores gode ven IE 5.2 på Mac, som ser ud til helt at ignorere colSpan attributten. Det er vel ikke noget du har en løsning på i ærmet? :)

Anyways, nu skal jeg jeg ikke hijacke spørgsmålet over i noget helt andet - foreløbig tak for hjælpen, smid et svar så du kan få dine point.
Avatar billede medjeti Nybegynder
10. marts 2004 - 14:19 #4
Hmm, ikke så stor succes som først antaget :(
Jeg har droppet colSpan'en, men tabellen går stadig i stykker. Jeg nøkker videre med det - hvis du har en lys idé så sig endelig frem, men bare glem colSpan-spørgsmålet.
Avatar billede roenving Novice
10. marts 2004 - 16:14 #5
var myRow = document.createElement("TR");

var myCell = null;
for(i=0;6>i;i++){
  myCell = document.createElement("td");
  myRow.appendChild(myCell);
  myCell.innerHTML = "Succes! - "+i;
}

myTable.insertBefore(myRow,placeholderRow);
Avatar billede medjeti Nybegynder
10. marts 2004 - 17:35 #6
Jep, den er jeg med på - cellerne bliver også skabt fint nok, men tabellen går helt i stykker af det.
Det må have noget at gøre med den overdrevet komplicerede tabel jeg har gang i, for det virker fint med en enkel tabel med bare et par rækker. jeg må have ryddet lidt op i den.

Bonusspørgsmål (fordi du ikke har svaret endnu :) - er det tilladft at placere en span her:
<table>
<span>
<tr>
<td></td>
</tr>
<span>
</table>
Avatar billede roenving Novice
10. marts 2004 - 17:40 #7
Principielt nej, selvom f.eks. IE nok vil være ligeglad !-)

Men f.eks. den tbody eller f.eks. en tr kan styles på samme måde, som alle andre elementer, så du har heller ikke brug for den !-)

-- men ellers velbekomme '-)

-- forøvrigt kan du måske lave noget med tabeller i tabeller, for så er det nemmere bl.a. at styre det med de nye rækker ...
Avatar billede medjeti Nybegynder
10. marts 2004 - 17:49 #8
Tænkte nok den ikke var helt god - mit problem er, at jeg sætter rækkerne ind med et <asp:Label> tag, som i html'en bliver renderet som et <span> tag.
Jeg må på jagt efter en workaround.
Avatar billede roenving Novice
11. marts 2004 - 00:57 #9
Hvorfor det ?-)

Du kan da bare:

myRow.id = "minLabel";

eller

myRow.className = "minClass";

-- og tak for points ;~}
Avatar billede medjeti Nybegynder
11. marts 2004 - 12:51 #10
Det er på server-siden det sker, ikke hos klienten: Jeg har forskellige grupper html i Label tags, som så bliver renderet eller ej afhængigt af fx. bruger-input.
Jeg er kommet om den nu, men det ville være rart hvis Microsoft havde tænkt i lidt mere standard-overholdende baner.
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