0

idグリッドから行を取得するには、次のスクリプト関数を使用します。正常に動作していました。関数内でIDを取得しclickます。しかし、関数の外側を取得しようとすると、Emptyと表示されます。外部のクリック関数値が必要selrですか?これを行う方法?

var selr='';           
$(document).ready(function(){
               $("#datagrid").click(function(e) {
                 row = jQuery(e.target).closest('tr');
                 getId= row.attr("id");//for getting row number
                 selr = $("#datagrid").getCell(getId,'companyid');//getting Row ID
                 alert('alert in'+selr);
                 });
                  alert('alert out'+selr);
});
4

5 に答える 5

4

selr重要なのは、関数を開始したときにのみの値が宣言されるというclickことです。したがって、をクリックしてから確認してくださいjqGrid

内のスクリプト$(document).ready();は機能せず、ドキュメントの準備ができた後、が設定されていないため、空として表示されselrます。

単純な変数を使用する代わりにselr、グローバル変数として割り当てます。selrに置き換えるだけwindow.selrです。

window.selr='';           
$(document).ready(function(){
    $("#datagrid").click(function(e) {
     row = jQuery(e.target).closest('tr');
     getId= row.attr("id");//for getting row number
     window.selr = $("#datagrid").getCell(getId,'companyid');//getting Row ID
     alert('alert in'+window.selr);
     });
     alert('alert out'+window.selr);
});
于 2012-09-04T05:35:10.780 に答える
2

クリックハンドラー内で値を割り当てているため、ユーザーが実際にクリックするまで値は設定されません。

テストselrして、初期化した値()とまだ等しいこと''がわかった場合は、ユーザーがまだグリッドをクリックしていないことがわかります。

于 2012-09-04T05:34:42.043 に答える
2

問題は、.click関数が実行される前に2番目のアラートalert('alert out'+selr); 呼び出されることです。したがって、の値は設定されません。selr

これを回避する方法を見つけた場合は、windowオブジェクトを使用してグローバル変数にアクセスすることをさらに保証できます。例えば

window.selr = null
 ...
window.selr = your value

ただし、通常、このようなグローバル変数は絶対に避けてください。

于 2012-09-04T05:35:46.287 に答える
0


クリック関数の外部でselr値を取得することはできません。データグリッドがテーブルID $("#datagrid tr").eq(0)の場合、最初の行が表示されます。

于 2012-09-04T05:34:56.633 に答える
0

すでに変数をグローバルとして割り当てています。

問題は、変数が関数内で開始され、クリックするとトリガーされ$("#datagrid")alert('alert out'+selr);DOM Ready Eventで実行されることです。おそらく、clickイベントがトリガーされる前です。

于 2012-09-04T05:37:48.740 に答える