07. juli 2008 - 21:27
Der er
14 kommentarer og 1 løsning
Værdi fra indhold i TD
Jeg løber nogle TD'er igennem med et script efter ID. Jeg skal fange indholdet i hver TD, eller ID'et skal flyttes ind i indholdet i form af en span eller lignende. Men hvordan får jeg indholdet af f.esk en span? <span id="G12">Alfa</span> Jeg skal have værdien af G12 som er alfa. Jeg skal bruge det til at farve alle TD'er eller indholdets baggrundsfarve hvis indholdet er det samme. Den del af koden har jeg styr på. Det skal være en objekttype hvor onDblClick fungerer. Har prøvet med innerhtml og value, men uden resultat.
Annonceindlæg tema
Forsvar & beredskab
Cybersikkerhed, realtidsdata og robuste it-systemer er blevet fundamentet for moderne forsvar.
scriptet: <script language="JavaScript" type="text/javascript"> function colorperson(id, navn) { num = 1; while(document.getElementById('U' + num)){ if ( document.getElementById('U' + num).value==navn ) { document.getElementById('U' + num).style.background='#FCFC00'; } num++; } } </script>
innerhtml skulle åbenbart blot skrives på den rigtige måde: innerHTML
Hvis du vil undgå .innerHTML, som jo ikke er validt, kan du bruge .firstChild.nodeValue i stedet.
Hmm, det virker heller ikke i FF, kun i IE: while(document.getElementById('U' + num)){ if ( document.getElementById('U' + num).firstChild.nodeValue==navn ) { if ( handling=='slet' ) { document.getElementById('U' + num).style.background='#FFFFFF'; } else { document.getElementById('U' + num).style.background=myVar; } } num++; }
Der ligger nok nogle tomme tekstnoder foran. Måske kan du bruge: while(document.getElementById('U' + num)){ if ( document.getElementById('U' + num).lastChild.nodeValue==navn ) { if ( handling=='slet' ) { document.getElementById('U' + num).style.background='#FFFFFF'; } else { document.getElementById('U' + num).style.background=myVar; } } num++; }
Jeg kan ikke lige se forskel på dit og mit. Her er den fulde funktion: <script language="JavaScript" type="text/javascript"> function colorperson(navn, handling) { var farve = new Array(); farve[0] = 'FFCC00'; farve[1] = 'FFCC33'; farve[2] = 'FFCC66'; farve[3] = 'FFCC99'; farve[4] = '00FF00'; farve[5] = '990000'; farve[6] = '66FF99'; farve[7] = '6699CC'; farve[8] = '669933'; farve[9] = 'FF6600'; farve[10] = 'FF66FF'; farve[11] = 'CCCCFF'; farve[12] = '99FFFF'; farve[13] = 'FF0000'; myVar = farve[Math.round(Math.random()*(farve.length-1))]; num = 1; while(document.getElementById('U' + num)){ if ( document.getElementById('U' + num).firstChild.nodeValue==navn ) { if ( handling=='slet' ) { document.getElementById('U' + num).style.background='#FFFFFF'; } else { document.getElementById('U' + num).style.background=myVar; } } num++; } } </script>
Jeg bruger lastChild i stedet for firstChild.
Hvis jeg sætter en alert ind, virker det gost nok med firstChild. Har ikke prøvet med lastchild. Fejlen er at cellerne IKKE bliver farvet i FF.
09. juli 2008 - 18:07
#10
Måske er handling=='slet' forkert? Eller myVar er gal på den. Du må nok ud i noget debugning.
09. juli 2008 - 18:36
#11
Jeg kalder handlingen således: colorperson(this.lastChild.nodeValue, 'slet')
09. juli 2008 - 18:40
#12
Ja, det er rigtigt nok.
09. juli 2008 - 19:45
#13
FF reagerer slet ikke på Javascript. Jeg har ikke den fjerneste forstand på det scriptsprog. Min side validerer godt nok på W3.org
09. juli 2008 - 20:28
#14
Prøv at rette background til backgroundColor. Og linjen: else { document.getElementById('U' + num).style.background=myVar; } skal være: else { document.getElementById('U' + num).style.background="#" + myVar; } Ellers indledes farven ikke med "#", og det er nok derfor, du ikke ser det korrekt i FF.
10. juli 2008 - 00:58
#15
Sorry, glemte dig helt. Det virker fint nu i alle tre browsere. Det var # tegnet der gjorde udfaldet. Den havde jeg skisme glemt.
Vi tilbyder markedets bedste kurser inden for webudvikling