2016-06-23 5 views
-3
function call(){ 

    var th; 
    var head; 
    $('#coToolTable').on('click', '.edit',function() { 
    th = $('#coToolTable th').eq($(this).index()); 

    head=th.text(); 
    alert("head="+head); 

    }); 

    var values1 = $('table tr td :checkbox:checked').map(function() { 
    return $(this).closest('tr').find('td:first').text() 

    }).get(); 

    alert("values="+values1+"head="+head); 
    check(values1,head); 
} 

alert("head="+head);を実行すると、テーブルヘッダーが出力されますが、次の警告ボックスalert("values="+values1+"head="+head);にはhead=undefinedと表示されます。どうして?次のコードでローカル変数 'head'の値をどのように取得できますか?

+0

あなたは '.get(0)'を使う必要があります。 –

+0

これらのアラートはどちらも正しいです。あなたはJavaScriptのコールバックが何であるか調べる必要があります。 – nem035

+0

2番目の 'alert'の前に最初の' alert'は*起こっていますか? 2番目の関数は、この関数が呼び出されたときに実行されますが、この関数が呼び出された後に何かがクリックされるまで、最初の関数は実行されません。このコードは混乱します。 – David

答えて

0

#coToolTableをクリックすると、それ以前ではなく、headに値が割り当てられます。 2番目のアラートは、call()を実行するとすぐに実行されます。これは、クリックイベントハンドラが実行されてからheadに値が割り当てられる前に実行されます。したがって、その2番目のアラートが実行されると、headという値が宣言された時点で表示されます(undefined)。

関連する問題