2014-09-06 258 views
1

我在用jQuery加載的單獨HTML文件中有一個表。然後我定義變量「aa」。我試圖在我的JavaScript函數「報告(期間)」中使用這個變量。我試圖創建一個全局變量,但沒有幫助。我不完全確定我做得正確。我對JavaScript相當陌生,對jQuery的瞭解甚少。我已經通過了其他類似的帖子,但很難理解到底發生了什麼。任何幫助將不勝感激。將jQuery變量傳遞給Javascript函數

jQuery的

jQuery(function($) { 
    aa = document.getElementById('part1Table').rows[0].cells[2].innerHTML; 
}); 

的Javascript

function report(period) { 

    x = document.getElementById("tblabiNew").rows[2].cells[1].innerHTML; /*----- for testing use a number instead (example: x = "205-000040-634") ------*/ 

/*---------------------------------------------------------------------------------------------- Start - Object Removal Control ------------------------------------------------------------------------------------*/ 

    if (x==aa) { 

     var i = 1; do { 
      + i; i++; 
      var e = document.getElementById (i); 
      e.style.display = 'none' 
     } while (i < 15) 

     /*polebrea21*/ 
     var polebrea = 21; 
     do { 
      + polebrea; 
      polebrea++; 
      var e = document.getElementById (polebrea); 
      e.style.display = 'none' 
     } while (polebrea < 28) 

     /*polebrea31*/ 
     var polebrea = 31; 
     do { 
      + polebrea; 
      polebrea++; 
      var e = document.getElementById (polebrea); 
      e.style.display = 'none' 
     } while (polebrea < 38) 

     /*regulatory51*/ 
     var regulatory = 51; 
     do { 
      + regulatory; 
      regulatory++; 
      var e = document.getElementById (regulatory); 
      e.style.display = 'none' 
     } while (regulatory < 64) 
     /*regulatory51*/ 

     /*regulatory81*/ 
     var regulatory = 81; 
     do { 
      + regulatory; 
      regulatory++; 
      var e = document.getElementById (regulatory); 
      e.style.display = 'none' 
     } while (regulatory < 94) 
    }; 
}; 
+0

如果它有效,你不應該改變它以要求jQuery(除非你有特定的優點,你沒有提到,出於某種原因);另外:你想傳遞什麼?什麼是相關的HTML,這個函數有什麼意思? – 2014-09-06 20:16:16

+0

我正在使用jquery來加載外部HTML文檔。如果有另一種方式,我會對它開放。 var「aa」包含一個數字,如「111-111111-111」如果兩個變量x和aa相等,則隱藏某些部件號。 x來自內部表並且來自另一個外部表的aa。如果我可以使用JavaScript函數工作,那麼一切都很好。我試圖將它們嵌套在一起,但只有一個或另一個可以工作。 – 2014-09-06 20:23:48

+3

值得注意的是:沒有這樣的事情作爲一個jQuery變量;只有JavaScript變量。 – Utkanos 2014-09-06 20:39:36

回答

0

如果我理解您的方案正確,你將不能獲得相關的節點,因爲通過ajax取出的HTML尚未注入DOM,因此無法使用document.getElementById獲取。

你可以提供取出刪除HTML的代碼,然後用它做什麼?這可能有助於瞭解情況。

無論如何,這是東西,你可能也想嘗試:

$.ajax({ 
    method: "GET", 
    url: "some/remote/url", 
    success: function(htmlContent) { 
    aa = $(htmlContent).find('#part1Table')[0].rows[0].cells[2].innerHTML; 
    // Do some processing 
    } 
}) 
1

如果你想要的「全局」變量應聲明它的所有功能體外。所以這應該是。

var aa; 
jQuery(function($) { 
    aa = //do something with aa 
}); 

但是你沒有聲明的任何東西都默認是全局的(只要在瀏覽器中它就是這樣工作的)。

如果你想創建本地變量,添加var關鍵字它的名字之前,像這樣:

function report(period) { 

    var x = //... 

} 

我相信你aa變量沒有聲明,因爲report函數被調用之前頁面就緒。

一切都在功能DOM後給予jQuery()運行準備,所以如果我寫:

jQuery(function($) { console.log(1); }); 
console.log(2); 

我得到的「2,1」,而不是「1,2」。

如果你想使用它,你應該真正學習JavaScript和jQuery。您的report代碼似乎可以用jQuery替換爲一行代碼。