JavaScript ala Zeiger?



  • hallo

    ich verzweifle mit javascript 😉 vermisse dort sowas wie zeiger, wie ich sie bei C++ liebe. ich schildere mal mein problem:

    ich habe etwa 50 variabeln dessen werte durch eine funktion geändert werden sollen. welche variable es beim aufruf betrifft ist sehr stark vom funktionsparameter abhängig. also:

    var variabel1;
    var variabel2;
    var variabel3;
    var variabel4;
    var variabel5;
    
    function ChangeValueOfVariable(variable)
    {
        switch(variable)
        {
            case 0:
            {
                variable = IRGEND_EIN_WERT;
                break;
            }
            case 1:
            {
                variable = IRGEND_EIN_WERT;
                break;
            }
            case 2:
            {
                variable = IRGEND_EIN_WERT;
                break;
            }
            case 3:
            {
                variable = IRGEND_EIN_WERT;
                break;
            }
        }
    }
    
    DIE A HREF LINKS:
    JavaScript:ChangeValueOfVariable(variabel1);
    JavaScript:ChangeValueOfVariable(variabel2);
    JavaScript:ChangeValueOfVariable(variabel3);
    JavaScript:ChangeValueOfVariable(variabel4);
    ChangeValueOfVariable(variabel5);
    

    so, nur leider geht sowas ja nicht weil man anscheinend keine zeiger übergeben kann. ich muss aber irgendwie beim aufruf von ChangeValueOfVariable(); als parameter die betroffene variabel definieren können. könnt ihr mir da vielleicht weiterhelfen?


  • Mod

    die variablen in ein array packen?



  • Wäre die einzige mir sinnvoll erscheinende Lösung; aber abgesehen davon halte ich das Design schon für sehr bedenklich, wenn da wirklich 50 freistehende Variablen sind.
    Wenn der Code dann z.Bsp. bei anderen Funktionen genau so tief verzweigt und abhängig ist, dürfte es schwer sein, da ein Array draus zu machen.

    @javapunk
    Was genau ist denn der Zweck deiner 50 Variablen? Das lässt sich mit Sicherheit eleganter lösen.



  • Shade Of Mine: wie genau sieht das aus? wie genau sieht der aufruf aus und wie genau die switch anweisung? habe gestern das ganze schon mit einem "objekt" versucht aber irgendwie erfolgslos. der funktions-aufruf sollte ja ungefähr so sein:

    ChangeValueOfVariable(arrayname.variablename);
    
    die switch anweisung sollte ungefähr so damit zurecht kommen:
    
    function ChangeValueOfVariable(arrayname)
    {
    switch(arrayname) //ist nun bei der betroffenen variable
    {
      arrayname = //wert ändern
    }
    }
    

    kannst du mir bitte ein beispiel geben?



  • Weißt du, was Arrays sind? Wenn ja, dann erübrigt sich die Frage doch?
    Ansonsten: http://de.selfhtml.org/javascript/objekte/array.htm

    Du übergibst der Funktion den Index des Elements des Arrays, das du verändern möchtest. In der Funktion greifst du dann auf den per Parameter übergebenen Index darauf zurück.

    P.s. In JavaScript ist ein Objekt ein Array und ein Array ein Objekt.



  • ich kenne arrays von C++, ja, bei javascript wird das wohl kaum anders sein. ich versuche das so, aber es scheint nicht ganz richtig zu sein:

    variable = new Array(
    					  \"0\", 
    					  \"0\", 
    					  \"0\", 
    					  \"0\", 
    					  \"0\", 
    					  \"0\", 
    					  \"0\", 
    					  \"0\", 
    					  \"0\", 
    					  \"0\", 
    					  \"0\", 
    					  \"0\", 
    					  \"0\", 
    					  \"0\", 
    					  \"0\", 
    					  \"0\", 
    					  \"0\", 
    					  \"0\", 
    					  \"0\", 
    					  \"0\", 
    					  \"0\", 
    					  \"0\", 
    					  \"0\", 
    					  \"0\");
    					  function ChangeOption(index)
    					  {
    					  	switch(variable[index])
    					  	{
    					  		case 0:
    					  		{
    					  			variable[index] = \"1\";
    					  			break;
    					  		}
    					  		case 1:
    					  		{
    					  			variable[index] = \"2\";
    					  			break;
    					  		}
    					  		case 2:
    					  		{
    					  			variable[index] = \"0\";
    					  			break;
    					  		}
    					  	}
    					  }
    


  • der aufruf in links:

    Java\1:ChangeOption(0);
    Java\1:ChangeOption(1);
    Java\1:ChangeOption(2);
    Java\1:ChangeOption(3);



  • switch(index)

    Abgesehen davon initialisierst du dein Array nicht mit numerischen Werten, sondern mit Strings.

    EDIT: Okay, die Strings sind in Ordnung. Ich dachte, du würdest das Array anders verwenden wollen 😉 Aber der switch(index) muss dennoch sein, denn sonst würdest du einen konkreten Wert prüfen ("0"), worauf deine case-Anweisungen nicht mehr passen würden (0, 1, 2 ...).



  • nein eben nicht. dann treffen die cases nicht mehr überein weil die für eine option stehen. diese sind immer abfragend für 0, 1 und 2. ich muss mit dem switch wissen welchen index es des array betrifft um dessen wert zu ändern.



  • okay es geht nun danke 🙂


Anmelden zum Antworten