簡體   English   中英

如何在javascript中為全局變量賦值?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM