2014-09-06 260 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替换为一行代码。