2012-04-14 9 views
-1

Ich habe eine Schaltfläche mit der ID = "kill".JavaScript-Funktion akzeptiert (#id) .val() gibt den falschen Wert

Hier ist mein JavaScript:

$("#kill").click(function(){ 
    getImage($(this).val()); 
}); 

function getImage(code){ 
    var code, 
     imgstr; 
    imgstr="mypath/"+code+".png"; 
    return imgstr; 
} 

Leider ist der falsche Wert zurückgegeben zu werden. Aber wenn ich den Wert innerhalb der Funktion getImage, wie folgt zuweisen:

$("#kill").click(function(){ 
    getImage($(this).val()); 
}); 

function getImage(code){ 
    var code="12", 
     imgstr; 
    imgstr="mypath/"+code+".png"; 
    return imgstr; 
} 

Dann gibt es den richtigen Wert zurück. Wie kann ich das beheben?

+0

Gibt es einen Grund, dass Sie Ihren 'code' Parameter mit einer Variablen gleichen Namens verstecken? Verläßt du 'code' für deine 'imgstr'-Berechnung? Dann verwenden Sie nicht den richtigen 'Code'. – ZenMaster

+1

Und was ist der falsche Wert, den Sie in der ersten Version bekommen? Es funktioniert perfekt mit mir: http://jsfiddle.net/FLbn9/ so muss das Problem anderswo sein. Sind Sie sicher, dass Sie keine doppelten IDs haben? Wenn Sie mehr als ein Element mit der ID 'kill' haben, wird es nicht korrekt funktionieren. – JJJ

+0

@ Jerone M Altura: 'der zurückgegebene Wert ist falsch 'ist nicht wirklich informativ ... was gibt es zurück? Außerdem sollten Sie Ihren HTML-Code posten, da wir nicht wissen, was 'kill' ist ... – nico

Antwort

2

Um den Wert verwenden, um die .val() Funktion abrufen und statt:

getImage($(this).val()); 
+0

Ich habe dies getan getImage ($ (this.val())); aber gibt immer noch einen falschen Wert zurück; –

+2

Nein, 'getImage ($ (this) .val());'. –

+0

Ich habe auch getImage ($ (this) .val()); –

0

Warum eine weitere lokale Variable mit dem gleichen Namen:

getImage($(this.val)); 

Sie verwenden sollten? (Vielleicht ist dies die code, in einigem Browser übergeben zu überschreiben.)

verwenden,

$("#kill").click(function(){ 
    getImage($(this).val()); 
}); 

function getImage(code){ 
    var localCode = code, 
    imgstr; 
    imgstr="mypath/"+localCode+".png"; 
    return imgstr; 
} 
+1

Ich dachte das zuerst, aber es sollte nicht wichtig sein. Eine leere var-Deklaration ist eine der empfohlenen Methoden zum "Importieren" einer globalen Variablen in den aktuellen Bereich. Ich konnte keinen Browser finden, der wie vermutet überschrieben wurde. – webnesto

+0

Danke für das Teilen der Informationen. Ich wusste, dass dies die empfohlene Methode ist. Irgendwelche Verbindungen als Referenz? – Jashwant

0

Von vor allem Diskussion kann ich sagen, dass Sie ältere Version von jQuery verwenden (vielleicht < als 1,6) . Überprüfen Sie die Version von jQuery, wenn Version < 1.6 als für die Verwendung der Schaltfläche .attr("value") anstelle von .val() ist, kann dies (nicht getestet) funktioniert !!

$("#kill").click(function(){ 
    getImage($(this).attr("value")); 
}); 

function getImage(code){ 
    var code, 
     imgstr; 
    imgstr="mypath/"+code+".png"; 
    return imgstr; 
} 
0

Entfernen Sie einfach die lokale Variable 'code'. Es versteckt den Parameter.

Verwandte Themen