如何在javascript中为全局变量赋值?
我使用以下脚本函数从网格中获取行如何在javascript中为全局变量赋值?,javascript,jquery,jqgrid,Javascript,Jquery,Jqgrid,我使用以下脚本函数从网格中获取行id。它工作正常。我在单击功能中获取ID。但是如果我尝试获取函数的外部,它将显示为空。我需要selr外部的单击功能值?如何做到这一点 var selr=''; $(document).ready(function(){ $("#datagrid").click(function(e) { row = jQuery(e.target).closest('tr');
id
。它工作正常。我在单击功能中获取ID。但是如果我尝试获取函数的外部,它将显示为空。我需要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);
});
您正在单击处理程序中分配值,因此在用户实际单击之前不会设置该值
如果您测试selr
,发现它仍然等于您初始化它的值('
),您就知道用户还没有单击网格。您无法在单击函数之外获得selr值,
如果datagrid是表id,那么$(“\datagrid tr”)。eq(0)
将为您提供第一行问题是,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);
});
问题是第二个警报警报('alert out'+selr)代码>将在执行.click函数之前被调用。因此,不设置selr
的值
如果您找到了一种方法来避免这种情况,那么可以进一步确保使用窗口
对象访问全局变量。例如
window.selr = null
...
window.selr = your value
但是,通常应不惜一切代价避免此类全局变量。您已经将该变量指定为全局变量
问题在于变量是在$(“#datagrid”)
和警报('alert out'+selr)点击后触发的函数内部启动的代码>在DOM就绪事件时执行,很可能在单击事件触发器之前执行。selr将仅在单击函数的触发器上分配。其余的箱子都是空的。您到底需要什么?@InternalServerError我需要在click函数外部获取selr的值。只有1)如果在之前调用click,并且2)如果getcell方法返回正确的值,您才能获得该值。检查这两个,您不应该给出var
。更新了答案。@Praveen Kumar如果我声明like var window.selr='';我得到了一个意外的令牌错误“没有一个简单的变量,而是将selr
分配为全局变量”-但是selr
已经是OP代码中的全局变量了,不是吗?(除非显示的所有代码都包含在另一个未显示的函数中。)@Praveen Kumar我仍然得到空的value@user这样做。删除$(document).ready()
中的警报,并将其分配给其他内容。例如,另一个函数,并将其绑定到链接的click函数。现在启动jqGrid
单击功能,然后单击链接。它应该有用!!!:)第二个警报肯定会在执行click函数之前调用。关于使用窗口。
访问全局变量,在这种情况下,当没有同名的局部变量隐藏全局变量时,为什么会有任何不同?是的,我已经更新了答案。使用窗口
对象通常有助于确保访问全局…“您无法在单击功能之外获取selr值”-为什么不?这是一个全局变量。(只是当OP试图在警报中使用它时,它仍然被设置为初始化为的空字符串,因为还没有发生单击事件。)