如何在javascript中为全局变量赋值?

时间:2012-09-04 05:31:12

标签: javascript jquery jqgrid

我使用以下脚本函数从网格中获取行id。它运作正常。我在click函数中获取了ID。但是,如果我尝试获取函数的外部,它将显示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);
});

5 个答案:

答案 0 :(得分:3)

问题是,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);
});

答案 1 :(得分:2)

您在点击处理程序中分配了值,因此在用户实际点击之前,它不会被设置。

如果您测试selr并且发现它仍然等于您将其初始化为('')的值,则您知道用户尚未点击该网格。

答案 2 :(得分:2)

问题是第二个警告alert('alert out'+selr); 在执行.click功能之前调用。因此,selr的值未设置。

如果您找到绕过此方法的方法,则可以进一步确保使用window对象访问全局变量。 E.g。

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

但是,通常应该不惜一切代价避免这种全局变量。

答案 3 :(得分:0)

你无法获得点击功能以外的自我价值,如果 datagrid 是表格ID,那么$("#datagrid tr").eq(0)会给你第一行

答案 4 :(得分:0)

您已将变量指定为全局。

问题是变量是内启动的一个函数,点击$("#datagrid")时触发,alert('alert out'+selr);在DOM Ready事件上执行,很可能在{{{}之前执行1}}事件触发器。