Avatar billede dan_n Nybegynder
22. februar 2007 - 15:21 Der er 10 kommentarer og
1 løsning

identificer og ændre style på alle TD-tag's i en tabel

Hej

Jeg har leget lidt med en funktion, som gør det muligt for brugeren at ændre skriftstørrelsen på teksten i min indholds-element ('content'). Funktionen fungere uden problemer, så længe teksten ikke står i en tabel !

Det javascript jeg bruger ser ud som følger:

----------------------------------------------------------
var resizePercentage = 100;
var resizeStep = 5;
var resizeUpperBound = 200;
var resizeLowerBound = 50;

function textresize(smaller)
{
var newpercentage = resizePercentage + (smaller ? (-1 * resizeStep) : resizeStep);
if(newpercentage < resizeLowerBound || newpercentage > resizeUpperBound)
  newpercentage = resizePercentage;
resizePercentage = newpercentage;
var bodyElement = document.getElementById('content');
for(var i=0; i<bodyElement.childNodes.length; i++)
{
  var el = bodyElement.childNodes[i];
  if(el && el.tagName && el.tagName == "P")
  el.style.fontSize = resizePercentage + '%';
}
bodyElement.style.fontSize = resizePercentage + '%';

}
----------------------------------------------------------

Jeg har forsøgt at ændre så scriptet også kan identifiere og ændre stylen på TD-tags, som er placeret inden i mit content-div element , men uden det store held!!

Er der nogle der har en bud på hvorledes dette kan gøres ?

/Dan
Avatar billede baddaydaddy Nybegynder
22. februar 2007 - 15:54 #1
hvis du kalder selve tabellen for 'content' (<table ID="content">) så skulle det samme gerne virke for alle TD-tags i tabellen...!
Avatar billede baddaydaddy Nybegynder
22. februar 2007 - 15:56 #2
Du kan selvfølgelig også navngive selve TD-tag'en også, hvis det er kund indholdet av den der skal ændre!
Avatar billede dan_n Nybegynder
22. februar 2007 - 16:14 #3
hmm, det er en løsning ! Den jeg har en del undersider, så kan det gøres mere dynamisk vil der klart være at foretrække !

Kan man ikke identificere alle <TD> via js - "childNodes" ? Jeg har forsøgt at tilføje ... && el.tagName == "TD" ..., men det gjorde ingen forskel !
Avatar billede baddaydaddy Nybegynder
22. februar 2007 - 16:42 #4
du kan jo eventuelt bruge metoden getElementsByTagName("td") i stedet for byelement...
Avatar billede dan_n Nybegynder
22. februar 2007 - 16:49 #5
> baddaydaddy
Det her jeg også overvejet, men ved ikke helt hvordan jeg så samtidig sikrer at det kun er td, som ligger i min 'content'div, som blive medtaget !

Men burde "..el.tagName == "td".." ikke "fange" det samme som getElementsByTagName("td") ??

har du evt. kode psuedo bud
Avatar billede baddaydaddy Nybegynder
22. februar 2007 - 17:26 #6
f.eks:

var table = document.getElementById("table");
var data = table.getElementsByTagName("td");
Avatar billede baddaydaddy Nybegynder
22. februar 2007 - 17:27 #7
altså "content" der det står "table"
Avatar billede roenving Novice
23. februar 2007 - 12:03 #8
>>dan_n 22/02-2007 16:49:52

-- nej, for tds er ikke børn af din content-div, men allermindst tip-oldebørn
(content --> table --> tbody --> tr --> td !-)

-- getElementsByTagName giver dig alle elementer inde i den pågældende element, som har det tagname, uanset hvor mange generationer under de ligger ...

-- så brug du bare baddaydaddys, men bemærk, at du så også får celler, der ligger i en nestet tabel med !-)
Avatar billede baddaydaddy Nybegynder
06. marts 2007 - 09:05 #9
ok... det var da også bare et bud!
Avatar billede dan_n Nybegynder
08. marts 2007 - 21:33 #10
Fik det til at virke ! Smid et svar, så lukker vi for denne gang.
Avatar billede baddaydaddy Nybegynder
08. marts 2007 - 21:54 #11
svar
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