如何在javascript中为全局变量赋值
how to assign the value for global variable in javascript?
我使用以下脚本函数从网格中获取行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)
将为您提供第一行
相关文章:
- Javascript变量赋值|
- 如何在javascript中为全局变量赋值
- 我可以在javascript中的回调函数中为变量赋值吗
- 无法在函数中检索全局变量的值
- JavaScript 变量赋值的行为令人惊讶
- 为什么 Javascript 在变量赋值时将 null 转换为字符串
- JavaScript: 变量赋值 in for 语句 |在前面或里面
- 我可以将变量赋值为数组值吗?
- 变量赋值无效
- 一行中的多个变量赋值
- jQuery- 为什么为全局变量赋值在函数中不起作用
- 通过输入法为全局变量赋值
- 如何为全局变量赋值,并在jquery/javascript中的其他函数中使用它
- 给回调函数中的全局变量赋值并返回它[Node.js]
- 使用$给全局变量赋值.Ajax (JQuery)
- Jquery全局变量赋值和在javascript函数中的使用
- 将变量赋值给全局作用域有什么危险或好处吗?
- 如何在一个函数中声明一个全局变量赋值,并在另一个函数中使用
- 在 ajax 调用中为全局变量赋值,并在单独的.js文件中使用它
- 给剑道网格列模板中的全局变量赋动态值