[英]how to assign the value for global variable in javascript?
我使用以下腳本函數從網格獲取行id
。 運行正常。 我在click
功能中獲得了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);
});
關鍵是,僅當您啟動click
函數時才聲明selr
的值。 因此,在單擊jqGrid
之后進行jqGrid
。
$(document).ready();
的腳本$(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是表ID,則$("#datagrid tr").eq(0)
將給您第一行
您已經將變量分配為全局變量。
問題是變量是在函數內部啟動的,該函數在單擊$("#datagrid")
和alert('alert out'+selr);
在DOM Ready Event上執行,最有可能在click
事件觸發之前執行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.