2012-04-14 5 views
-1

私はid = "kill"のボタンを持っています。(#id).val()を受け入れるjavascript関数が間違った値を返します

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

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

残念ながら、間違った値が返さなっている:

は、ここに私はJavaScriptです。しかし、次のようにgetImage関数内に値を代入すると、

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

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

正しい値が返されます。これをどうすれば解決できますか? .val()機能を使用する値を取得する

+0

同じ名前の変数を持つ 'code'パラメータを隠す理由はありますか? 'imgstr'の計算に' code'を使っていますか?次に、正しい 'code'を使用していません。 – ZenMaster

+1

そして、最初のバージョンでは間違った価値はありますか?それは私と完全にうまく動作します:http://jsfiddle.net/FLbn9/問題は他の場所になければなりません。 IDが重複していませんか? idが 'kill'の要素が複数ある場合、正しく動作しません。 – JJJ

+0

@Jerone M Altura: '返された値が間違っています'本当に有益ではない...それは何を返しますか? 'kill 'が何であるかわからないので、あなたのHTMLを投稿するべきです... – nico

答えて

2

、代わりの:

getImage($(this.val)); 

あなたが使用する必要があります。

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

私はこれをしました getImage($(this.val())); でも、間違った値を返します。 –

+2

いいえ、 'getImage($(this).val());'。 –

+0

私はこのgetImage($(this).val())もやっています。 –

0

同じ名前を持つ別のローカル変数を作成するのはなぜ? (これは一部のブラウザでは、code渡さ上書きされる場合があります。)この

使用、すべての議論以上から

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

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

私は最初はそれを考えましたが、問題ではありません。空のvar宣言は、グローバル変数を現在のスコープに「インポートする」推奨される方法の1つです。疑わしいと上書きされたブラウザは見つかりませんでした。 – webnesto

+0

情報を共有していただきありがとうございます。私はこれが推奨される方法であることを知りました。参照用のリンクはありますか? – Jashwant

0

私はあなたがjQueryの古いバージョン(1.6よりも多分<)を使用していると言うことができます。バージョンが<の場合、.val()ではなく、.attr("value")の代わりに、<が1.6であるjQueryのバージョンを確認してください。これはテストされていない可能性があります。

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

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

ローカルの 'code'変数を削除するだけです。パラメータを隠しています。