• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

[FRAGE] Ergebnisse Verkettete Auswahllisten suchbar

pumuckl

New member
Hallo würde gerne dieses Script an mein Homepage eingeben.
mit der Unterschied "var val = '';" sollen nicht anzeigt werden sondern suchbar werden.


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>Beispiel 1</title>

<script type="text/javascript" src="terminAuswahl.js"></script>
<script type="text/javascript" src="LinkedSelection.js"></script>
<script type="text/javascript">

/**
 * Diese Callback-Funktion soll beim Abschliessen der Auswahlstrecke und beim
 * Ändern der Auswahl in einer der Auswahllisten aufgerufen werden.
 * @param selected ein Array mit den Daten der jeweiligen Auswahllisten
 *                 (leer, wenn Strecke nicht abgeschlossen)
 **/


function ergebnisZeigen( selected )
{
  if( selected.length )
  {
    /*
     * Auswahlstrecke wurde beendet
     */
   var txt = '';
    // Visualisierung der Auswahlsrecke
     
    for( var i = 0; i < selected.length; i++ )
    {
            txt += ( i>0 ? ' → ' : '') + selected[i].text;
    }
    var output = '<h4>Sie haben sich entschieden für: <'+'/h4><p>' + txt + '<'+'/p>';
  }
  else
  {
    /*
     * Auswahlstrecke wurde noch nicht beendet
     */

    // Hinweis zur Auswahl in der nächsten Auswahlliste
		var output = '<p>Wählen Sie eine Option aus der nächsten Auswahlliste.<'+'/p>';
  }
  var ergebnisObj = document.getElementById( 'ergebnis' ).innerHTML = output;
};

window.onload = function()
{
  var vk = new LinkedSelection( [ 'professor', 'lesung', 'termin' ], ergebnisZeigen, terminAuswahl );
}


    function finden(){
        window.location='https://www.google.de/?gfe_rd=cr&ei=J39LVP79NOuH8Qelo4DwBQ#q= +professor.p23 ';
    }


</script>

</head>
<body>

<h1>Oder unsere SET-Angebote</h1>
<p>Kathrein komplett Satanlagen für Sie fachgerecht zusammen gestellt.</p>

<p>
<label id="professorLabel" for="professor"><b>Weche Größe: </b></label>
<select id="professor">
  <option value="--">Bitte wählen:</option>
  <option value="p23">CAS 60 (60cm Ø) </option>
  <option value="p24">CAS 80 (75cm Ø) </option>
  <option value="p25">CAS 90 (90cm Ø) </option>

</select>

<label id="lesungLabel" for="lesung"><b>Welche Farbe: </b></label>
<select id="lesung">
  <option value="--">------</option>
</select>

<label id="lesungTermin" for="termin"><b>Wie viele Anschlüsse: </b></label>
<select id="termin">
  <option value="--">------</option>
</select>

</p>

<div id="ergebnis"></div>

 <button type="button" id="berechnen"  onclick="finden();">Finden</button>
</body>
</html>

Code:
var terminAuswahl = {
  'professor' : {
    'p23' : ['p23', 'Albers, Alfred'],
    'p24' : ['p24', 'Braun, Berta'],
    'p25' : ['p25', 'Drachenzaun, Doris'],
    'p26' : ['p26', 'Müller, Stephan'],
    'p27' : ['p27', 'Meier, Manfred']
  },

  'lesung' : {
    'p23' : [
      ['l55', 'Katzen in der freien Wildbahn'],
      ['l56', 'Katzen im Gefängnis'],
      ['l56', 'Katzen in Australien']
    ],

    'p24' : [
      ['l65', 'Hunde im Himmel'],
      ['l66', 'Hunde in der Hölle'],
      ['l66', 'Höllenhunde']
    ],

    'p25' : [
      ['l75', 'Wirtschaftskram I'],
      ['l76', 'Wirtschaftskram II'],
      ['l76', 'Wirtschaftskram III']
    ],

    'p26' : [
      ['l85', 'Technologie in der Steinzeit'],
      ['l86', 'Technologie in der Bronzezeit'],
      ['l86', 'Technologie heute']
    ],

    'p27' : [
      ['l95', 'Althochdeutsch'],
      ['l96', 'Mittelhochdeutsch'],
      ['l96', 'Deutsch für Angefangene']
    ]
  },

  'termin' : {

    'l55' : [
      ['t123', 'Freitags 10 - 12'],
      ['t124', 'Sonntags 18 - 20']
    ],
    'l56' : [
      ['t125', 'Montags 12 - 14'],
      ['t126', 'Dienstags 8 - 10']
    ],
    'l57' : [
      ['t127', 'Dienstags 10 - 12'],
      ['t128', 'Mittwochs 13 - 15']
    ],

    'l65' : [
      ['t133', 'Freitags 10 - 12'],
      ['t134', 'Sonntags 18 - 20']
    ],
    'l66' : [
      ['t135', 'Montags 12 - 14'],
      ['t136', 'Dienstags 8 - 10']
    ],
    'l67' : [
      ['t137', 'Dienstags 10 - 12'],
      ['t138', 'Mittwochs 13 - 15']
    ],

    'l75' : [
      ['t143', 'Freitags 10 - 12'],
      ['t144', 'Sonntags 18 - 20']
    ],
    'l76' : [
      ['t145', 'Montags 12 - 14'],
      ['t146', 'Dienstags 8 - 10']
    ],
    'l77' : [
      ['t147', 'Dienstags 10 - 12'],
      ['t148', 'Mittwochs 13 - 15']
    ],

    'l85' : [
      ['t153', 'Freitags 10 - 12'],
      ['t154', 'Sonntags 18 - 20']
    ],
    'l86' : [
      ['t155', 'Montags 12 - 14'],
      ['t156', 'Dienstags 8 - 10']
    ],
    'l87' : [
      ['t157', 'Dienstags 10 - 12'],
      ['t158', 'Mittwochs 13 - 15']
    ],

    'l95' : [
      ['t163', 'Freitags 10 - 12'],
      ['t164', 'Sonntags 18 - 20']
    ],
    'l96' : [
      ['t165', 'Montags 12 - 14'],
      ['t166', 'Dienstags 8 - 10']
    ],
    'l97' : [
      ['t167', 'Dienstags 10 - 12'],
      ['t168', 'Mittwochs 13 - 15']
    ]
  }
};

Code:
/**
 * LinkedSelection ist ein Klasse zur Steuerung dynamisch verketteter Auswahllisten
 * @param inputSelects ein Array mit den IDs der Auswahllisten in hierarchischer Reihenfolge
 *						Bsp: [ 'select1', 'select2', 'select3' ]
 * @param callback Funktion, welche beim Abschließen (und Ändern) der Auswahl aufgerufen werden soll
 * @param data das Daten-Objekt in JSON
 *						Bsp: { 'select1':['wert1','text1'], 'select2':['wert5','text5'] }
 **/
function LinkedSelection( inputSelects, callback, data )
{
	var self = this;				/* um aus EventHandlern auf diese Instanz zugreifen zu können */
	var selects = new Array();		/* Liste der verketteten Auswahllisten */

	/**
	 * Die Funktion changeHandler wird dem onchange-Handler jeder Auswahlliste zugewiesen.
	 * Wenn eine gültige Auswahl getroffen wurde, soll entweder die als nächste
	 * Auswahlliste (nextSelect) bekannte Auswahlliste mit Daten befüllt werden,
	 * oder die Callback-Funktion ausgeführt werden.
	 **/
	var changeHandler = function()
	{
		var value = this.selectedValue();

		// Auf die nächste Auswahlliste folgende Auswahllisten müssen wieder
		// in den default-Zustand versetzt werden
		if( typeof(this.nextSelect) == 'object' )
		{
			for( var i = this.nextSelect.selectID + 1; i < selects.length; i++ )
				selects[i].replaceOptions( new Array() );
		}

		// Abbrechen, wenn ein Dummy-Wert ausgewählt wurde
		if( value == '--' )
		{
			if( this.selectID < selects.length )
				selects[ this.selectID +1 ].replaceOptions( new Array() );

			return;
		}

		if( typeof(this.nextSelect) == 'object' )
		{
			/*
			 * nextSelect ist eine Auswahlliste
			 */

			// Wenn keine Daten zur gemachten Auswahl zur Verfügung stehen,
			// müssen wir sicherstellen, dass wir auf keine nicht vorhandenen Objekte zugreifen.
			if( !data[ this.nextSelect.id ][ value ] )
			{
				if( !data[ this.nextSelect.id ] )
					data[ this.nextSelect.id ] = {};

				data[ this.nextSelect.id ][ value ] = new Array();
			}

			// Neue Optionen in der nächsten Auswahlliste setzen
			this.nextSelect.replaceOptions( data[ this.nextSelect.id ][ value ] );

			// Wenn die Auswahlstrecke nicht beendet ist, muss die Callback-Funktion
			// dennoch aufgerufen werden, damit entsprechend auf Änderungen
			// reagiert werden kann.
			callback( new Array() );
		}
		else
		{
			/*
			 * Die Auswahlstrecke ist absolviert
			 */

			// Wahlen der einzelnen Listen in ein Array schreiben um
			// dieses an die Callback-Funktion zu übergeben.
			var selected = new Array();
			for( var i = 0; i < selects.length; i++ )
			{
				selected.push( { 'id' : selects[i].id,
								 'value': selects[i].selectedValue(),
								 'text' : selects[i].selectedText() } );
			}
			callback( selected );
		}
	};

	/**
	 * replaceOptions ersetzt die aktuellen Optionen der Auswahlliste durch
	 * die im Array newOptions gelieferten Daten. Wenn ein leeres Array übergeben
	 * wird, wird die default-Option "--" gesetzt.
	 * @param newOptions ein Array mit den neuen Optionen
	 *					  Bsp: [ ['value1','text1'], ['value2','text2'], ]
	 **/
	var replaceOptions = function( newOptions )
	{
		/*
		 * Diese Funktion setzt bewusst DOM-Methoden ein und verzichtet
		 * auf die vom Options-Objekt gegebenen Möglichkeiten.
		 */

		// alte Optionen der Auswahlliste löschen
		var opts = this.getElementsByTagName( 'option' );
		while( opts.length > 0 )
			this.removeChild( opts[0] );

		// wenn keine neuen Optionen übergeben wurden, default-Option setzen
		// andernfalls "Bitte wählen" voranstellen
		if( newOptions.length == 0)
			this.addOption( '--', '------' );
		else
			this.addOption( '--', 'Bitte wählen:' );

		// neue Optionen in die Auswahlliste schreiben
		for( var i = 0; i < newOptions.length; i++ )
			this.addOption( newOptions[i][0], newOptions[i][1] );
	};

	/*
	 * Fügt der Auswahlliste eine neue Option hinzu
	 * @param value Wert der neuen Option
	 * @param text Name der neuen Option
	 */
	var addOption = function( value, text )
	{
		var opt = document.createElement( 'option' );
		opt.value = value;
		opt.appendChild( document.createTextNode( text ) );
		this.appendChild( opt );
	};

	/**
	 * holt den Wert der aktuell gewählten Option
	 * @returns den Value der aktuell gewählten Option
	 **/
	var selectedValue = function()
	{
		return this.options[ this.selectedIndex ].value;
	};

	/**
	 * holt den Text (Name) der aktuell gewählten Option
	 * @returns den Text der aktuell gewählten Option
	 **/
	var selectedText = function()
	{
		return this.options[ this.selectedIndex ].text;
	};

	/**
	 * Selektiere die Option mit dem Wert value, wenn keine Option mit dem Wert
	 * value existiert, wird die Auswahl nicht geändert.
	 * @param value der Wert den eine Option haben muss, um ausgewählt zu werden.
	 **/
	var selectByValue = function( value )
	{
		for( var i = 0; i < this.options.length; i++ )
		{
			if( this.options[i].value == value )
				this.selectedIndex = i;
		}
	}

	/**
	 * Initialisiere den Manager für verkettete Auswahllisten.
	 * Findet Auswahllisten anhand der (per inputSelects) bekannten IDs.
	 * Bestückt die Auswahllisten mit den nötigen Funktionen und Event-Handlern
	 **/
	this.init = function()
	{
		// bestücke bestehende selects
		for( var i = 0; i < inputSelects.length; i++ )
		{
			var t = document.getElementById( inputSelects[i] );

			// ignoriere falsche IDs
			if(!t)
				continue;

			// neue Funktionen und Event-Handler zuweisen und in selects registrieren
			t.replaceOptions = replaceOptions;
			t.addOption = addOption;
			t.selectedValue = selectedValue;
			t.selectedText = selectedText;
			t.selectByValue = selectByValue;
			t.selectID = selects.length;
			t.onchange = changeHandler;
			selects.push( t );

			// registriere Auswahlliste als nextSelect bei der vorhergehenden
			if( selects.length > 1 )
				selects[ selects.length-2 ].nextSelect = t;
		}
	};

	// initialisieren!
	this.init();
}


Habe dazu folgende Code hinzugefügt.

HTML:
 function finden(){
        window.location='https://www.google.de/?gfe_rd=cr&ei=J39LVP79NOuH8Qelo4DwBQ#q= +val ';
    }

 <button type="button" id="berechnen"  onclick="finden();">Finden</button>
 
Was war jetzt genau deine Frage zu diesem Script? Irgendwie kann ich in deinem Post keine konkrete Frage bzw. kein konkretes Problem erkennen. :)
 
Hallo, tut mir leid, hätte mich besser ausdrücken sollen.
mir geht es darum, in der Funktion "ergebnisZeigen" werden die Werte der Varialbe (txt) angezeigt.
Ich würde gerne die Werte der variable hinter einer Url anhängen. Dazu habe ich ein Funktion hinzugefügt.

HTML:
    function finden(){
        window.location='http://www.google.com' + txt;
    }
Doch es klappt nicht. Ich kann auf die Werte der Variable nicht zugreifen.
 
Zuletzt bearbeitet von einem Moderator:
Zurück
Oben