Avatar billede janus_007 Nybegynder
25. august 2006 - 00:36 Der er 7 kommentarer og
1 løsning

getElementById og parentNode

Meget simpelt spørgsmål...

Jeg synes ikke rigtigt jeg kan få fat i parentNode når jeg bruger en getElementById til at finde objektet med - hvordan kan det være?

Virker getElementById kun med childNodes? Eller er jeg bare træt?
Avatar billede janus_007 Nybegynder
25. august 2006 - 01:12 #1
Se jeg har det her:
<tr>
<td></td><td></td><td>2012020</td><td>1471</td><td>jyske bank</td><td>16:57(0)</td><td align="center">15</td><td>1623</td><td><input id="U3FB48EDCD6D84C938798F26C15380503"type="button" value="MyButton info" onclick="uis(this);" class="B01" /></td>
</tr>

Tag jer ikke af indholdet i cellerne. Får at simplicere, så lad os sige jeg gemmer inpitid'en: U3FB48EDCD6D84C938798F26C15380503 i en cookie ved tryk på MyButton. Nu vil jeg så gerne have fat i inputelementet vha. getElementById, det kan jeg sådan set også fint nok:
var callerElement = document.getElementById(detail.RowIdentifier);
og kan også alerte:
alert(callerElement.id) og den viser U3FB48EDCD6D84C938798F26C15380503

Men såsnart jeg laver en parentNode på callerElementet får jeg en error:
this.callerElement.parentNode is null or....

Eks.vis når jeg gør sådan her:
var parentCallerElement = document.getElementById(detail.RowIdentifier).parentNode;

eller
var parentCallerElement = callerElement.parentNode;

Jeg vil bare gerne have fat i min TD da jeg skal udskifte et par cellvalues :-)
Avatar billede janus_007 Nybegynder
25. august 2006 - 01:14 #2
Gaaabb...
Jeg vil også lige nævne at jeg altså ikke laver en direkte getElementById ved tryk på MyButton, men altså gemmer denne ID og senere hen vil bruge den igen ved en anden event på siden!!
Avatar billede mclemens Nybegynder
25. august 2006 - 01:36 #3
eksempel:



<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta

http-equiv="content-type" content="text/html; charset=iso-8859-1"><title>Ingen titel</title>

<script type="text/javascript">

var callerElementid;

function uis(tn){
callerElementid =tn.id;
}

function uida(){
tn = document.getElementById(callerElementid).parentNode;
alert(tn.outerHTML);
}

</script>

</head><body>

<table>
<tr>
<td></td><td></td><td>2012020</td><td>1471</td><td>jyske bank</td><td>16:57(0)</td><td

align="center">15</td><td>1623</td><td><input id="U3FB48EDCD6D84C938798F26C15380503" type="button" value="klik her først!"

onclick="uis(this);" class="B01" /></td>
</tr>
</table>

<br><br><br><br>
<b onclick="uida();">lad os lige alerte outerHTML til parentNode for at køre test på </b>

</body></html>



... fejlen lægger nok i at hvor jeg har skrevet: callerElementid =tn.id; har du nok skrevet: var callerElementid =tn.id; så det er blevet en lokal variabel istedet for at du har rettet den globale variabel ... hvis det ikke matcher op må du komme med noget kildekode ...


svaret er: [ Virker getElementById kun med childNodes? Eller er jeg bare træt? ] Det virker fint nok ... og du har nok overset en "var" eller glemt at deklarere globalt - eller også får du ikke tekststrengen overført ordentligt ... prøv evt. at lave en alertaf din id inden du finder objectet ud fra id'et ... hvis id'et matcher overens og det hele kan jeg kun se en evt. mulig fejl ved at du forsøger på at få fat i objectet inden det er klar i dom ... men prøv det andet først :o) .. nat, nat ;)
Avatar billede mclemens Nybegynder
25. august 2006 - 01:37 #4
... kaster lige et svar, hvis det
virkede (er sporadisk online fra 9 - 17)
Avatar billede mclemens Nybegynder
25. august 2006 - 01:38 #5
... og det er sent - kan ikke engang
finde ud af at lægge et svar :D
Avatar billede mclemens Nybegynder
25. august 2006 - 01:43 #6
Nu forstår jeg intet det er tredje gang jeg trykker ... men har lige genstartet
- synes at et script jeg lavede før havde gjort min firefox lidt ør ?
Avatar billede janus_007 Nybegynder
26. august 2006 - 00:13 #7
ahhh se så kom det til at virke! - Ikke så meget at var callerElement var global, det må den ikke være i mit system, da jeg sidder og arbejder med  ajax og har brug for asynkrone callbacks. Dvs. sådan kort forklaret, så har jeg en webside med en tabel på og hver række indeholder noget data og en knap til at opdatere det data med, så når brugeren klikker på knappen laves der er et async callback og hvornår det kommer tilbage ved jeg ikke... men jeg sender netop ID'en med igen sådan at jeg kan finde den korrekte række når serveren melder tilbage - derfor alt det besvær her *SS*

Men du gav mig et hint om mine vars og this und so weiter, sent nat og blabla... (du kender det hehe)... og ny lykkedes det dælme :-)

Tak...
Avatar billede mclemens Nybegynder
26. august 2006 - 00:26 #8
Velbekom, og tak for point :o)
Samt tak for forklaringen af
problemet med returkaldet :)
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