Ute: Was mache ich falsch?

Hallo zusammen,

ne Anfängerfrage: Funktion f bekommt zwei Strings a und b übergeben, die in einem Objekt verwendet werden, das einer weiteren Funktion übergeben wird. Kurz gesagt, ich will in f die Funktion g (so wie sie dasteht) aufrufen. Geht aber nicht. h und i funktionieren hingegen.

Was mache ich falsch?

function f(a, b) {
    g({a : b});      // geht nicht
    h({'a' : b});    // geht
    i({'a' : 'b'});  // geht auch
}

  1. Besseres Beispiel:

    function f(a, b) {
      g({a : b});
    }

    function g(obj) {
      alert(obj.test);
      // hier soll 'hallo' ausgegeben werden
      // ausgegeben wird jedoch 'undefined'
    }

    f('test', 'hallo');

    1. Hallo,

      Dann solltest du so vorgehen, wie ich in https://forum.selfhtml.org/?t=137286&m=891824 beschrieben habe:

      function f (name, wert) {  
        var obj = {};  
        obj[name] = wert;  
        g(obj);  
      }  
      f('test', 'hallo');  
        
      function g (obj) {  
        alert(obj.test);  
      }
      

      Mathias

      --
      »No nations, no borders.«
      SELFHTML Weblog
      1. Jippie! Ihr seid ja so geil... ;-)

        Und vor allem schnell. DANKE! Und sorry für die erste unklare Beschreibung.

        Ach Gott bin ich jetzt happy.

        Gruß,
        Ute

  2. Hallo zusammen,

    ne Anfängerfrage: Funktion f bekommt zwei Strings a und b übergeben, die in einem Objekt verwendet werden, das einer weiteren Funktion übergeben wird. Kurz gesagt, ich will in f die Funktion g (so wie sie dasteht) aufrufen. Geht aber nicht. h und i funktionieren hingegen.

    Was mache ich falsch?

    function f(a, b) {
        g({a : b});      // geht nicht
        h({'a' : b});    // geht
        i({'a' : 'b'});  // geht auch
    }

    öhm, was genau willst du bezwecken
    welche fehlermeldung kommt
    wo sind die funktionen g, h, i?

    und verwende am besten eindeutige funktionsnamen, die auch aussagen, was die funktion macht, um nicht etwa mit variablennamen wie in konflikt zu geraten

    beschreibe mal bitte genau was du machen willst

    bis denn dann ;)

  3. Hallo,

    ne Anfängerfrage: Funktion f bekommt zwei Strings a und b übergeben, die in einem Objekt verwendet werden, das einer weiteren Funktion übergeben wird. Kurz gesagt, ich will in f die Funktion g (so wie sie dasteht) aufrufen. Geht aber nicht. h und i funktionieren hingegen.

    Was mache ich falsch?

    »Geht nicht« ist keine Fehlerbeschreibung.

    function f(a, b) {
        g({a : b});      // geht nicht
        h({'a' : b});    // geht
        i({'a' : 'b'});  // geht auch
    }

    Ich verstehe nicht ganz, was du beabsichtigst, und ich verstehe nicht, was du hier unter »geht« oder »geht nicht« verstehst.

    Nichts davon funktioniert in der Hinsicht, dass ein Objekt übergeben wird, das eine Eigenschaft hat, dessen Namen aus der Variable a stammt und dessen Wert aus der Variable b stammt.

    { a : b } und { 'a' : b } sollten identische Resultate erzeugen: ein Object mit einer Eigenschaft namens a mit einem Wert, der in der Variable b steht. (Variable a spielt dabei keine Rolle!)

    Lediglich { 'a' : 'b' } sollte aus der Reihe tanzen: dabei wird weder die Variable a noch die Variable b verwendet. Es wird ein Object erstellt mit einer Eigenschaft namens a mit einem String "b" als Wert.

    Was hast du jetzt genau vor? Willst du ein Objekt mit einer Eigenschaft, dessen Name genauso variable wie dessen Wert ist? Dann hilft dir der Object-Literal nicht weiter, das ginge eher so:

    var a = "variabler name";  
    var b = "variabler wert";  
    var obj = {};  
    obj[a] = b;  
      
    for (var i in obj) {  
       alert("Name: " + i + "\nTyp: " + typeof(obj[i]) + "\nWert: " + obj[i]);  
    }
    

    Mathias

    --
    »No nations, no borders.«
    SELFHTML Weblog