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

how to assign the value for global variable in javascript?

本文关键字:全局变量 赋值 javascript      更新时间:2023-09-26

我使用以下脚本函数从网格中获取行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);
});

问题是,只有当您启动click函数时,才会声明selr的值。因此,单击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);
});

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

如果您测试selr,发现它仍然等于您将其初始化为的值(''),那么您就知道用户还没有点击网格。

问题是第二个警报alert('alert out'+selr);将在执行.click函数之前被调用。因此,不设置selr的值。

如果您找到了规避此问题的方法,则可以进一步确保通过使用window对象来访问全局变量。例如

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

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

您已经将变量分配为全局变量

问题是变量是在函数内部启动的,该函数在单击$("#datagrid")时触发,而alert('alert out'+selr);在DOM就绪事件时执行,很可能在click事件触发之前。

您无法在点击函数之外获得selr值,
如果数据网格是表id,则$("#datagrid tr").eq(0)将为您提供第一行