0

特定のタスクを実行するために、あるjqueryコードブロックから別のコードブロックに変数を取得しようとしています。ユーザーが入力するフォームがあり、2 つのオプションがありますが、1 つはデフォルトで設定されています。オプション 1、オプション 2 は、オプション 1 を置き換えるボタンをクリックすると表示されます。

jquery

$("#opt2").click(function(){
var newopt = $("name").val();
$("#opt1").replaceWith('<input type="text" id="name">');
});

$("#ipload").click(function(){
alert(newopt);
});

しかし、これは、いくつかのデータを入力すると未定義のイベントが発生します。前の関数とは別のものではないという人もいるかもしれません。だから私の質問は、iploadをクリックしたときにnewoptを2番目の機能にアラートさせるにはどうすればよいかということです

4

3 に答える 3

2

関数で変数 newopt を宣言したため、その関数内でのみアクセスできます。

したがって、 newopt を他の場所で使用できるようにするには、次のように関数の外で宣言します。

var newopt;
$("#opt2").click(function(){
newopt = $("name").val();
$("#opt1").replaceWith('<input type="text" id="name">');
});

$("#ipload").click(function(){
alert(newopt);
});

しかし、このコードはまだ機能しません - ID 名を持つ div の値が必要であることを示すためにセレクターから # を逃しました - これは機能します:

var newopt;
$("#opt2").click(function(){
newopt = $("#name").val();
$("#opt1").replaceWith('<input type="text" id="name">');
});

$("#ipload").click(function(){
alert(newopt);
});

JavaScript のスコープについて詳しくは、 http: //coding.smashingmagazine.com/2009/08/01/what-you-need-to-know-about-javascript-scope/ をご覧ください。

于 2012-08-23T23:40:02.907 に答える
1

newopt を最初の関数のローカル変数にしました。したがって、それは秒で見られないでしょう。これを試して:

var newopt="";

$("#opt2").click(function()
{
    newopt = $("name").val();
    $("#opt1").replaceWith('<input type="text" id="name">');
});

$("#ipload").click(function()
{
    alert(newopt);
});
于 2012-08-23T23:40:19.440 に答える
0

変数をグローバルにすることもできます$("name").val();$("#name").val();、もしそうなら、同じIDを持つ別の要素を追加するのはなぜですか.IDは一意でなければなりません.

于 2012-08-23T23:43:50.087 に答える