Oprettet ons. d. 20. januar 2010 kl. 12:07:51

dotcom1
dotcom1 (18.819 point. Point ude: 60)

innerHTML replace: escaping citationstegn?

Hej.

Jeg har noget kode, som jeg kun kan rette client-side:

<table border="1" cellpadding="0">
  <tr>
    <td>Text</td>
  </tr>
</table>

Jeg vil gerne ændre border="1" til border="0", så jeg har prøvet at bruge dette script:

<script type="text/javascript">
<!--//
function replace_stuff() {
document.body.innerHTML = document.body.innerHTML.replace(/border=\"1\"/g,'border=\"0\"');
}
//-->

</script>

- men det virker kun i Firefox, ikke i Internet Explorer. Jeg har før brugt scriptet til at erstatte enkelte ord, og der har det fint virket i IE. Så jeg antager at det måske skyldes at citationstegnene ikke escapes rigtigt, eller?

Kan nogen hjælpe?

Skrevet ons. d. 20. januar 2010 kl. 17:07:47| #1

intenz
intenz (43.900 point)
underenplov.dk
Det er også en lidt funky kode du der :P

Hvis du kan hente dit table element ud, bør du bruge css. Det burde overskrive den border=1 der er sat.

Noget i stil med (ikke testet):

function updateBorder() {
tableElements = document.getElementsByTagName('table');
for (var i=0; i<tableElemnets.length; i++) {
  tableElemnets[i].style.border = "0px";
}
}

Det vil så opdatere alle table elementer på siden, jeg ved ikke om det er et problem.

Skrevet ons. d. 20. januar 2010 kl. 17:09:46| #2

intenz
intenz (43.900 point)
underenplov.dk
Hov, lidt tastefejl.

Dette:
for (var i=0; i<tableElemnets.length; i++) {
  tableElemnets[i].style.border = "0px";
}

skal selvfølgelig være:
for (var i=0; i<tableElements.length; i++) {
  tableElements[i].style.border = "0px";
}

:)

Skrevet tor. d. 21. januar 2010 kl. 13:19:52| #3

dotcom1
dotcom1 (18.819 point)
Hej.

Tak for svaret.

Min table har en class, hvor jeg har angivet border:0; og det er vel det samme som dit script gør? I så fald vil man stadig kunne se en skygge rundt om tabellen, da den stadig har border="1" i sin kode.

Derfor vil jeg bare gerne fjerne denne border="1" men har kun mulighed for at gøre det clientside.

Skrevet tor. d. 21. januar 2010 kl. 15:09:55| #4

intenz
intenz (43.900 point)
underenplov.dk
Ja, det kan jeg godt se når jeg lige tester det.
Hvis du prøver at køre:
alert(document.body.innerHTML);

kan du se, at IE ikke fortolker dine "'er. Og derfor virker den ikke i IE. Dette virker dog i IE, men ikke i firefox:
document.body.innerHTML = document.body.innerHTML.replace(/border=1/g,'border=0');

Så du skal finde ud af hvilken browser de kører, og så køre din replace efter det.

Skrevet tor. d. 21. januar 2010 kl. 15:18:51| #5

dotcom1
dotcom1 (18.819 point)
Hej igen.

Okay, tak for det. Jeg synes dog ikke at det er den mest optimale løsnng - og det er ikke din skyld. :) Jeg tænker bare at det da må kunne lade sig gøre på en lidt smartere måde...
Jeg vil lige lade spørgsmålet stå åbent lidt endnu...måske er der en derude med en bedre løsning.

Skrevet tor. d. 21. januar 2010 kl. 15:32:02| #6

intenz
intenz (43.900 point)
underenplov.dk
Her er den smarte løsning :)

function updateBorder() {
    tableElements = document.getElementsByTagName('table');
    for (var i=0; i<tableElements.length; i++) {
      tableElements[i].setAttribute("border", "0");
    }
}

Skrevet fre. d. 22. januar 2010 kl. 10:39:04| #7

dotcom1
dotcom1 (18.819 point)
Hej.

Tak for den smarte løsning. Det ser interessant ud. Jeg skal lige forstå scriptet - lavet det så border="0" på alle tables på siden? Eller skal man angive sim class der hvor der står ('table'), eller?

Mvh.

Skrevet fre. d. 22. januar 2010 kl. 11:51:20| #8

intenz
intenz (43.900 point)
underenplov.dk
Ja, den kører alle table elementer igennem. Hvis du kun vil gøre det for en med bestemt class. Kan du hente hente en getElementsByClass funktion og skifte denne linje ud, med class:
document.getElementsByTagName('table');

Du kan finde getElementByClass på google:
http://www.google.dk/ (...)

Skrevet man. d. 25. januar 2010 kl. 11:00:31| #9

dotcom1
dotcom1 (18.819 point)
Hey, og tak for din hjælp.
Jeg fandt dette script som løser opgaven som den skal.

Skriv et indlæg




Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] [img]link til billede[/img]
Web- og emailadresser omdannes automatisk til links

Log ind

   

   

Seneste spørgsmål

Tabindex!

Oprettet den 11. februar 2012 kl. 11.37
thomasfricke giver 30 point for svar | Giv et svar »

skal frem brugernavn ned og sige om den har eller ej

Oprettet den 11. februar 2012 kl. 02.44
tobrukDk giver 20 point for svar | Giv et svar »

Muligvis script-konfllikt i jquery. Min slider vises...

Oprettet den 9. februar 2012 kl. 23.00
Peterjakobsen giver 30 point for svar | Giv et svar »

Seneste guides

Installer win 7
Den gode bruger


   




Tips & Tricks fra PC World

Teaser billede

Her er fem sjove danske websider du skal kende

Trænger dine lattermuskler til en omgang fitness på dansk? Vi viser vej til fem websider fyldt med humor og vanvittig satire.


Anmeldelser fra PC World

Teaser billede

Test: Denne super-tablet er iPads hårdeste konkurrent

Eee Pad Transformer Prime er frygtindgydende med sin quadcore processor og evne til at trylle sig om til bærbar. Apple bør kigge i bagspejlet, for Asus' tablet-pc kommer buldrende - og gør det...


Seneste blogindlæg

Teaser billede

Tvangslukke spørgsmål: Hvad er den bedste løsning?

Hej Vi har mange åbne spørgsmål på Eksperten. Vi ville gerne tvangslukke dem - så et spørgsmål efter f.eks. 6 måneder lukkes. Men der er et par uklarheder som ville være gode at få lidt input til:...


Nyheder fra PC World

Teaser billede

Nu kan du snart hente Windows 8

Den nye offentlige betaversion af Windows 8 er klar i denne måned.


Nyheder fra Computerworld

Teaser billede

Måske snart slut med Androids helt store problem

Android-platformen har længe været plaget af et særligt problem. Men måske er problemet nu ved at være elimineret.


Kurser
Samarbejdspartnere

Udgiver · © 2012 IDG Danmark A/S · Hørkær 18 · 2730 Herlev · Tlf.: 77 300 300 · Fax: 77 300 301 · Brug af personoplysninger