Gå til innhold

Aksessere noder i IE og Opera


Anbefalte innlegg

Skrevet

Jeg bruker følgende syntaks for å aksessere noder i DOM-hierarkiet:

 

alert(document.getElementById(copyId).cells.volume.innerHTML);

Dette er for å aksessere en rad i en tabell som har copyId som id, riktig rad blir aksessert, men cells finner den ikke, hvordan kan jeg aksessere cellene i en rad?

 

Det jeg gjør nå fungerer bare i Firefox og ikke i IE eller Opera. Er det slik at bare firefox støtter denne måten å aksessere elementer på, må jeg gi hvert enkelt element en id for å kunne aksessere det i ie og opera?

 

HTML-koden ser omtrent slik ut:

 

<tr id='54' bgcolor=E4E2D8>
<td name='copyId'>54</td>
<td name='userId'>2</td>
<td name='volume'>12</td>
<td name='groupId'>42</td>
<td name='originals'>Noe tekst<br>Mer tekst<br></td>
<td name='edit'>
	<form name='editCopyJobForm'>
		<input name='editCopyJobButton' type='button' value='endre' onclick='editCopyJob(54)' />
	</form>
</td></tr>

Videoannonse
Annonse
Skrevet

Har funnet ut at jeg kan bruke f.eks:

 

alert(document.getElementById(copyId).childNodes[0].innerHTML);

 

I IE for å få samme effekten som med det forrige i firefox, men å bruke childNodes og en index er mer uoversiktlig, samtidig som dette til gjengjeld ikke fungerer i Firefox. Noen som kan mer om dette enn meg, og som kan fortelle meg hva jeg bør bruke?

Skrevet

alert(document.getElementById(copyId).cells[0].innerHTML);

 

Ser ut til å funke i både IE og Firefox, så selv om det kan bli litt mer uoversiktelig er det vel til å leve med :(

Skrevet

Hei, litt usikker på hva du ville gjøre her. Ville du endre innholdet "54" til noe annet i denne delen av koden?

<td name='copyId'>54</td>

parent-formen har riktignok et element kalt "volume", men det har ikke denn rada. Litt vanskelig å hjelpe når det du sier ikke stemmer overns med koden din.

 

 

document.getElementById(copyId).cells[0].innerHTML

er copyId en variabel? viss ikke skal det vel være en string, nemlig 'copyId'

Skrevet
parent-formen har riktignok et element kalt "volume", men det har ikke denn rada. Litt vanskelig å hjelpe når det du sier ikke stemmer overns med koden din.

Beklager, det skulle selvfølgelig stå: cells[2] istedenfor cells[0] altså:

document.getElementById(copyId).cells[2].innerHTML

Dette fungerer i FF, O og IE. Mens:

document.getElementById(copyId).cells.volume.innerHTML

Som jeg syns er mer beskrivende og dermed mer oversiktlig, bare fungerer i FF.

 

I et javascript så er copyId en variabel, som hvis den skal aksessere den html-snutten jeg la ut er 54. Da finner getElementById(54) radelementet. Det er her problemet starter. Dette radelementet har en celle med navn='volume', derfor vil jeg gjerne aksessere denne cellen ved å si noe slikt som: cells.volume dette er oversiktlig og greit, men det eneste som funker i IE, Firefox og Opera er cells[2], noe jeg ikke føler er like oversiktlig, og vil gi problemer hvis tabellen får flere eller færre kolonner som følge av en endring. Men det må jeg vel kanskje bare leve med?

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...