Jeg sidder og har redigere lidt sharepoint - eller rettere sagt prøver at få sharepoint til at gøre et par ting, man ikke kan redigere out of the box.
Sagen er den, at jeg har en tabel (Med et unikt ID (ms-cal-gempty)), som bliver dynamisk genereret. Dvs jeg har ingen muligheder what-so-ever for at ændre i html "upfront".
Jeg har behov for at fjerne en (relativ stor) mængde rækker (<tr> tags). Problemet er dog følgende: - De har ingen hverken ID eller Class tilknyttet - Mængden der skal fjernes er dynamisk
Der er dog (I mit hoved) et lille lys forude. De <tr> tags jeg ønsker at beholde i tabellen indeholder alle <td> tags med en specifik class (ms-cal-walldayevent).
Der er en enkelt undtagelse til ovenstående, som heller ikke skal fjernes. Den indeholder <th> tags med en specifik class (ms-cal-wtopday)
Jeg har mulighed for at afvikle javascript og CSS på siden efter den er loadet, så jeg forestiller mig, at det må være muligt at adressere de <tr> tags via en parent-chield relation. Men jeg kan simpelthen ikke finde ud af hvordan jeg skal gøre det.
Jeg håber der sidder en venlig sjæl derude, som kan hjælpe mig på vej - på forhånd tak.
Under forudsætning af, at alle TR-elementer ligger i samme TBODY-element - og første TD i de rækker, du ønsker at gemme, har klassen 'ms-cal-walldayevent' - kan du gøre noget i stil med:
var aTR = document.getElementById("ms-cal-gempty").getElementsByTagName("tr"), elmParent = aTR[0].parentNode, aTD;
for (var i=aTR.length-1; i<=0; i--) { aTD = aTR[i].getElementsByTagName("td"); if (aTD.length>0 && aTD[0].className==="ms-cal-walldayevent") { elmParent.removeChild(aTR[i]); } }
Er forudsætningerne ikke opfyldt, må du lige sige til - så skriver jeg koden om =)
Dohhh ... det er da mig, der ikke tænker mig om! Det var jo dem, der ikke skulle fjernes! Sorry =)
Her er en quick'n'dirty, som fjerner rækken, hvis den indeholder TD-elementer, samtidig med at dens kode ikke indeholder strengen "ms-cal-walldayevent". Håber, det går bedre *D
var aTR = document.getElementById("ms-cal-gempty").getElementsByTagName("tr"), elmParent = aTR[0].parentNode, sHtml;
for (var i=aTR.length-1; i>=0; i--) { sHtml = aTR[i].innerHTML; if (sHtml.toLowerCase().indexOf("td")>-1 && sHtml.indexOf("ms-cal-walldayevent")<0) { elmParent.removeChild(aTR[i]); } }
Ja, naturligvis. Det vil næppe kunne overraske noget reflekterende menneske, hvis vedkommende blot sporadisk har fulgt mine advarsler om brugen af innerHTML =)
Er der noget, du ikke forstår, opstiller du bare en punktliste. Vær ikke flov over, hvis den bliver lang ... du er blandt folk, der kender dig *o)
Jeg er ikke særlig velbevaret i javascript, så det er sikkert bare en fejl 40.
Nu hvor jeg kigger igennem kan jeg se, at jeg har givet dig lidt forkerte informationer. Tabellen har ikke et ID, der hedder 'ms-cal-gempty' - men i stedet er det en class.
@Jokke
Tak (tror jeg) - Jquery er en mulighed, men med mine manglende evner, så skal jeg vist have det serveret som en færdig løsning før jeg kan bruge det :)
Jeg ønsker at fjerne alle rækker undtaget den der starter i linje 4 og den der starter i linje 15. I dette tilfældet er det kun én række, men antallet kan være varierende.
Der er ingen mulighed for at angive yderligere id eller class til den html - nu hvor jeg kigger på html'en kunne det måske være en mulighed at fjerne alle <tr> som indeholder <td> med class='ms-cal-enoworkhourF'?
Det virker ikke rigtigt til at virke, jeg har prøvet at kalde funktionen fra en knap - der kommer ingen error, men der sker heller ikke noget når jeg gør det :(
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.