2016-04-13 11 views
1

Also habe ich versucht, dieses kleine Stück Code zu arbeiten. Ich bin mir jedoch nicht sicher, ob es meine Syntax ist oder ob ich das falsch gemacht habe. Das Ziel dieses Codes ist, dass der Benutzer eine Zeichenfolge wie "H2" or "Li" eingibt und die Nummer zurückgibt, die dieser Zeichenfolge im div "testing" zugeordnet ist. Wenn ich den Code ausführe, gibt er nichts zurück."Schlüssel" Objekt in jQuery funktioniert nicht richtig

<form> 
      <input type="text" name="atomNameOne"/> 
</form> 
     <button name="moleRatios">Submit!</button> 
     <br/> 
     <br/> 
     <br/> 
    <div id="testing"></div> 

Dies ist der jQuery Code mit meinem Code zugeordnet ist.

$('button[name=moleRatios]').click(function(){ 
    var compound = { 
    H2 = 2.01594, 
    Li = 6.939, 
    Be = 9.0122, 
    B = 10.811 
    } 

    var search = function(name) { 
     for(var key in compound) { 
      if(compound[key] === name) { 
      return compound[key]; 
      } 
     } 
    }; 


    var $atomValueOne = search($('input[name=atomNameOne]').val()); 


    $('#testing').text($atomValueOne); 

    }); 
+2

es so aussehen wie 'var Verbindung = { H2: 2,01594, Li: 6,939, Be: 9,0122, B: 10,811, }' – uzaif

+0

Auch brauchen Sie keine 'for' Schleife zu suchen durch das "zusammengesetzte" Objekt. –

+0

Warum? Ich dachte, so sieht man durch eine "Wörterbuch" -Funktion – mobimobi

Antwort

0

gibt es eine falsche Syntax gibt:

var compound = { 
H2 = 2.01594, 
Li = 6.939, 
Be = 9.0122, 
B = 10.811 
} 

sollte

var compound = { 
H2: 2.01594, 
Li: 6.939, 
Be: 9.0122, 
B: 10.811 
} 

und dann

Verbindung [key] wird 2,01594 zurück, wenn Schlüssel H2 ist, vielleicht möchten Sie

if(compound[key] === name) 

sein

if(key == name) 

stattdessen Der Rest soll d gleich sein

+0

Vielen Dank, das war das Problem die ganze Zeit! – mobimobi

0

ersetzen

if(compound[key] === name) 

mit

if(key === name) 

und auch die Objektsyntax korrigieren, wie in anderen Antworten gegeben

0

Der richtige Weg ist, ein Objekt zu definieren

var compound = { H2: 2.01594, Li : 6.939, Be: 9.0122, B : 10.811 } 

als propertyname: property Format.
Um den Eigenschaftsnamen als String zuzugreifen, Nutzungs-

var search = function(name) { 
    for(var key in compound) { 
     if(key === name) { 
     return compound[key]; 
     } 
    } 
}; 

wo der Iterator ‚Schlüssel‘ wird immer den Namen geben (als Zeichenfolge) der Immobilie und das Format ObjektName [Iterator] wird immer geben der Wert der Immobilie.

Verwandte Themen