将jQuery变量传递给Javascript函数

时间:2014-09-06 20:12:10

标签: javascript jquery html var

我在一个单独的HTML文件中有一个表,我用jQuery加载。然后我定义变量“aa”。我试图在我的JavaScript函数“report(period)”中使用这个变量。我尝试创建一个全局变量,但这没有帮助。我并不完全确定我做得对。我是JavaScript的新手,知道更少的jQuery。我已经浏览了其他类似的帖子,但很难准确理解发生了什么。非常感谢任何帮助。

的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)
   }; 
};

2 个答案:

答案 0 :(得分:1)

如果你想要&#34;全球&#34;变量你应该在所有函数体之外声明它。所以这应该是。

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);

我得到&#34; 2,1&#34;而不是&#34; 1,2&#34;。

如果你想使用它,你应该学习JavaScript和jQuery。您的report代码似乎可以用jQuery替换为一行。

答案 1 :(得分: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
  }
})