gruss Rainer
... Zu viele Unbekannte im Spiel, um mir die Materie wenigstens über
"try and error" anzueignen ....Niederlage.Schluchz.
glaub ich nicht - wenn doch, dann richtet dich die lektuere des folgenden
funktionstuechtigen und umfassend kommentierten beispiels ja vielleicht
doch noch auf.
achtung! code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>prove-of-concept-array-check-in-or-out.html</title>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
<meta http-equiv="content-script-type" content="text/javascript">
<script type="text/javascript">
~~~~~~JavaScript
/*
der folgende funktionsblock erweitert das prototype-objekt des zum
sprachkern gehoerenden "Array"-konstruktors um die methode "remove".
allgemeinverstaendlich formuliert bedeutet dies, dass allen hier
je erzeugten array-objekten zusaetzlich zu den standardmethoden
auch noch die methode "remove" zur verfuegung steht.
*/
Array.prototype.remove = function(obj) {
var arr = this, i = 0;
while (i<arr.length) {
if (arr[i] === obj) {
arr = arr.slice(0,i).concat(arr.slice(i+1,arr.length));
--i;
}
++i;
}
for (i=0; i<arr.length; ++i) {
this[i] = arr[i];
}
this.length = arr.length;
};
//Array.prototype.remove = function(obj) {var arr=this,i=0;while(i<arr.length){if(arr[i]===obj){arr=arr.slice(0,i).concat(arr.slice(i+1,arr.length));--i;}++i;}for(i=0;i<arr.length;++i){this[i]=arr[i];}this.length=arr.length;};
/*
der zweite block enthaelt das globale array "checkboxData".
dieses array "kennt" die methode "remove".
die richtigkeit des konzepts laesst sich anhand der arbeitsweise
der funktion "checkInOrOut" ueberpruefen.
jeder klick auf eine checkbox ruft diese funktion auf. das einzige
funktionsargument ist die referenz auf die gerade geklickte checkbox.
wurde die checkbox abgehakt, wird der wert dieser box dem globalen
array "checkboxData" hinzugefuegt; anderenfalls wird dieser wert
wieder aus ebenjenem array entfernt. damit die im array stehenden
aktuellen werte auch noch schoen angezeigt werden koennen, wird
das array vor seiner ausgabe nocheinmal schnell sortiert.
*/
var checkboxData = []; // new Array(); // konstruktor;
var checkInOrOut = function (control) {
var dataTrace = document.forms["checkboxes"].elements["traceLine"];
if (control.checked) {
checkboxData.push(control.value); // check value in;
} else {
checkboxData.remove(control.value); // remove value;
}
checkboxData.sort();
dataTrace.value = ((checkboxData.toSource) ? (checkboxData.toSource()) : (checkboxData.toString()));
};
~~~~~~html
</script>
</head>
<body>
<p>proof-of-concept-array-check-in-or-out.html</p>
<form name="checkboxes" action="" method="get">
<input type="text" name="traceLine" size="38" disabled><br><br>
<label for="checkbox1">
<input type="checkbox" name="checkbox1" id="checkbox1" value="checkbox1" onclick="checkInOrOut(this)">
value="checkbox1"
</label><br>
<label for="checkbox2">
<input type="checkbox" name="checkbox2" id="checkbox2" value="checkbox2" onclick="checkInOrOut(this)">
value="checkbox2"
</label><br>
<label for="checkbox3">
<input type="checkbox" name="checkbox3" id="checkbox3" value="checkbox3" onclick="checkInOrOut(this)">
value="checkbox3"
</label><br>
</form>
</body>
</html>
gute nacht - peterS. - pseliger@gmx.net
--
"Because objects in JavaScript are so flexible, you will want to think differently about class hierarchies.
Deep hierarchies are inappropriate. Shallow hierarchies are efficient and expressive." - Douglas Crockford
ie:( fl:) br:> va:( ls:& fo:) rl:| n3;} n4:} ss:} de:µ js:} mo:? zu:]
"Because objects in JavaScript are so flexible, you will want to think differently about class hierarchies.
Deep hierarchies are inappropriate. Shallow hierarchies are efficient and expressive." - Douglas Crockford
ie:( fl:) br:> va:( ls:& fo:) rl:| n3;} n4:} ss:} de:µ js:} mo:? zu:]