Script hört nicht auf -> Rekursion

Marcel G

Mitglied
Hallo zusammen,

ich hab mal folgendes Script geschrieben und ausprobiert:
HTML:
<!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>Insert title here</title>
<script>
function getFormularData(object) {
	var getstr = "";
	getstr += object.tagName + " " + object.className + " children: " + object.childNodes.length + "\n";
	for (i=0; i<object.childNodes.length; i++) {
		if(object.childNodes[i].tagName != "#text" & object.childNodes[i].tagName != null) {
			getstr += getFormularData(object.childNodes[i]);
		}
	}
	alert(getstr);
	return getstr;
}
</script>
</head>
<body>
	<div class="content_area">
		<form name="emailContact" action="javascript: getFormularData(document.emailContact);" method="post">
			<div class="content_header">Text</div>
			<div class="content_subheader">Text</div>
			<div class="content_value">
				<div class="email_attribute_name">
					Text
				</div>
				<div class="email_attribute_value">
					<input type="text" name="sender" class="kontakt" value="" size="30"></input>
				</div>
				<div class="clear"></div>
			</div>
			<div class="content_subheader">Text</div>
			<div class="content_value">
				<div class="email_attribute_name">
					Text
				</div>
				<div class="email_attribute_value">
					<input type="text" name="topic" class="kontakt" value="" />
				</div>
				<div class="clear"></div>
				<div class="email_massage_header">
					Text
				</div>
				<div class="email_massage_header">
					<textarea name="message" cols="50" rows="5" /></textarea>
				</div>
				<div class="clear"></div>
			</div>
			<div class="content_subheader">Text</div>
			<div class="content_value">
				<div class="email_captcha">
				</div>
			</div>
			<input type="button" name="button" value="Submit" 
   onclick="javascript:getFormularData(document.emailContact);">
		</form>
	</div>
</body>
</html>

nun ist es so, dass dieses Ding nicht mehr aufhört und ich versteh das nicht. Ich geh immer sämtliche childNodes rekursiv durch. Irgendwann hängt es sich jedoch auf und bleibt bei einer Node stehen. Weiß jemand warum oder was ich falsch gemacht hab?

Gruß Marcel
 
Dein Zähler in der For Schleife ist global , wie genau sich das nun auswirkt kann ich da auch nicht sagen leider das ist bei Rekursion immer das Problem das man irgendwann nicht mehr durchblickt ;)

Code:
    for (var i=0; i<object.childNodes.length; i++) {
        if(object.childNodes[i].tagName != "#text" && object.childNodes[i].tagName != null) {
            getstr += getFormularData(object.childNodes[i]);
        }
    }
 
super Sache, das wars. Da hätte ich wohl besser auf den Gültigkeitsbereich aufpassen müssen. Das war die Lösung für 2 Stunden vergebliches Suchen.
Danke
 

Neue Beiträge

Zurück