Just nu i M3-nätverket
Jump to content

Elements barn


Mattias Sandsäter

Recommended Posts

Mattias Sandsäter

Vill ha ett elements alla barn för att kunna utföra operationer på dessa.

Följande exempel beskriver det ganska bra tror jag. Har skrivit i blandad pseudo-kod och javascriptkod.

 

[log]

function border(id){ //ett id för ett element skickas in, tex en <tr>-tag

var theTag;

theTag = document.getElementById(id);

var children = theTag.getAllChildren() //Hämta in barnen (<td>-taggar)

foreach(children as child){ //Traversera alla barn

child.style.backgroundColor = 'green' //Gör nåt kul med barnen

} [/log]

 

Det är på raden där jag ska hämta in barnen som jag inte vet hur jag ska göra längre.

 

 

 

[inlägget ändrat 2005-07-29 19:16:27 av Mattias Sandsäter]

Link to comment
Share on other sites

Anjuna Moon

Du hämtar ut barnen på närmaste underliggande nivå med .children. För att gå ner på djupet får du göra detta rekursivt.

 

Link to comment
Share on other sites

Mattias Sandsäter

ok, jag försöker komma framåt i min funktion rad för rad men fastnar på direkten med din hjälp. Så här ser det alltså ut nu:

 

[log]

function border(id){

var theTag;

theTag = document.getElementById(id);

var allChildren[] = theTag.children;

}[/log]

 

eller ska man skriva i stil med:

var allChildren[] = document.theTag.children;

fast det funkade inte heller, hur ser den korrekta syntaxen ut för en sådan rad?

 

 

 

(Jag behöver i det jag ska göra nu bara gå en nivå ner så får jag bara sparat undan alla barnen kan jag helt enkelt bara loopa igenom dom och utföra saker på dom.)

 

 

 

 

 

Link to comment
Share on other sites

Anjuna Moon

Här är ett exempel:

[log]

function SetBorders(id){ 
var theTag; 
theTag = document.getElementById(id);
var children = theTag.children; 
for(var child in children){ 
	o=children[child];
	if (o.style) {
		o.style.borderStyle='solid';
		o.style.borderWidth='1px';
		o.style.borderColor='black';
	}
}
} 

[/log]

 

[inlägget ändrat 2005-07-29 20:16:24 av Anjuna Moon]

Link to comment
Share on other sites

Mattias Sandsäter

Tusen tack, nu kom jag vidare och ska se om jag kan få ihop det jag har velat från början. Bara en fråga om din kod:

if(o.style), vad innebär det mer specifikt?

Antar att man kollar något i stil med om objektet o har någon .style överhuvudtaget, eller hur man nu ska uttrycka det.

 

Link to comment
Share on other sites

Anjuna Moon
if(o.style), vad innebär det mer specifikt?

När du loopar med FOR...IN i elements så är första elementet som returneras children['length] som innehåller antal kommande element. Detta är inget element med någon stil, därav kontrollen. Du kan lika gärna skriva loopen så här och skippa kontrollen:

 

[log]

function SetBorders(id){ 
var theTag; 
theTag = document.getElementById(id);
var children = theTag.children; 
for(i=0;i<children.length;i++){ 
	o=children[i];
	o.style.borderStyle='solid';
	o.style.borderWidth='1px';
	o.style.borderColor='black';
}
} 

[/log]

 

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...