Siri: Neues JS-Objekt innerhalb eines Scopes?

Beitrag lesen

Hallo,

an der Stelle mit den drei *** dachte ich, ich hätte ein Objekt erzeugt.
Wenn man die Seite aufruft und zuerst auf die obere Liste klickt und dann auf die untere, dann gibt der alert "true" zurück, d.h. this.moveInProgress ist Objektübergreifend bzw. mein vermeintlichen Objekte sind keine. Was mache ich falsch?

Viele Grüße
Siri

PS: function myContentLoaded nur der Vollständigkeit halber, habe ich über molily.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">  
<html xmlns="http://www.w3.org/1999/xhtml">  
	<head>  
		<meta charset="utf-8"/>  
		<title></title>		  
	</head>  
	<body>	  
		<!-- ====================== -->  
		<ul id="wrapper1" class="changeposul">  
			<li id="fd1">a1</li>  
			<li id="fd2">a2</li>  
			<li id="fd7">a7</li>  
		</ul>  
		<!-- ====================== -->  
		<ul id="wrapper2" class="changeposul">  
			<li id="fda">a1</li>  
			<li id="fdb">a2</li>  
		</ul>  
		<!-- ====================== -->  
		<script>
var MyFW = (function () {  
  
	function init() {	  
  
		var changePosULsArray = document.getElementsByClassName('changeposul');		  
		for (var y= 0; y < changePosULsArray.length; y++) {				  
  
			// *** Neues Objekt oder nicht???  
			var liChangePosHandlerLoop = new LiChangePosHandler();  
			liChangePosHandlerLoop.init();  
			  
			if (document.addEventListener) {				  
				changePosULsArray[y].addEventListener("click", liChangePosHandlerLoop.moveUp,  false);		  
			} else {					  
				changePosULsArray[y] = liChangePosHandlerLoop.moveUp;		  
			}					  
			  
		}	  
  
	}  
	  
	return {		  
		afterLoad: function() {		  
			init();	  
		}	  
	}  
	  
	function LiChangePosHandler() {  
	  
		this.moveInProgress;  
		  
		this.init = function() {  
			moveInProgress = false;  
		}  
		  
		this.moveUp = function(eventObject) {		  
			  
			alert(moveInProgress);  
			  
			if (moveInProgress == false) {  
				moveInProgress = true;			  
				// Do anything  
			}		  
		  
		};		  
		  
	}  
	  
})();	  
		  
myContentLoaded (window, MyFW.afterLoad );
		</script>  
	</body>  
</html>  

Der Vollständigkeit halber:

function myContentLoaded(win, fn) {  
  
	var done = false, top = true,  
  
	doc = win.document, root = doc.documentElement,  
  
	add = doc.addEventListener ? 'addEventListener' : 'attachEvent',  
	rem = doc.addEventListener ? 'removeEventListener' : 'detachEvent',  
	pre = doc.addEventListener ? '' : 'on',  
  
	init = function(e) {  
		if (e.type == 'readystatechange' && doc.readyState != 'complete') return;  
		(e.type == 'load' ? win : doc)[rem](pre + e.type, init, false);  
		if (!done && (done = true)) fn.call(win, e.type || e);  
	},  
  
	poll = function() {  
		try { root.doScroll('left'); } catch(e) { setTimeout(poll, 50); return; }  
		init('poll');  
	};  
  
	if (doc.readyState == 'complete') {  
		fn.call(win, 'lazy');  
	} else {  
		if (doc.createEventObject && root.doScroll) {  
			try { top = !win.frameElement; } catch(e) { }  
			if (top) poll();  
		}  
		doc[add](pre + 'DOMContentLoaded', init, false);  
		doc[add](pre + 'readystatechange', init, false);  
		win[add](pre + 'load', init, false);  
	}  
	  
}