【问题标题】:Pass jQuery variable to Javascript Function将 jQuery 变量传递给 Javascript 函数
【发布时间】:2014-10-31 11:53:45
【问题描述】:

我在使用 jQuery 加载的单独 HTML 文件中有一个表格。然后我定义变量“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)
   }; 
};

【问题讨论】:

  • 如果它有效,您不应该将其更改为需要 jQuery(除非出于某种原因,您没有提到某个特定优势);另外:你想通过什么?相关的 HTML 是什么,这个函数是什么意思?
  • 我使用 jquery 只是为了加载外部 HTML 文档。如果有另一种方式,我会对此持开放态度。 var "aa" 包含一个数字,例如 "111-111111-111" 如果两个变量 x 和 aa 相等,则它隐藏某些部分编号。 x 来自内部表,aa 来自另一个外部表。如果我能让 aa 在 javascript 函数中工作,那么一切都很好。我试图将它们嵌套在一起,但只有一个可以工作。
  • 注意点:没有 jQuery 变量之类的东西;只有 JavaScript 变量。
  • 如果您使用 jQuery 的唯一目的是获取 dom 就绪事件,那么为什么不直接使用 vanilla js 等效项呢?
  • 我一直在 IE 而不是我们的生产服务器上测试我的代码。我发现 jQuery 在生产服务器上不起作用。我根本无法使用 jQuery。我需要找到另一种方法来导入我的外部 HTML 页面,或者只是将其包含到我的主文档中。

标签: javascript jquery html var


【解决方案1】:

如果你想要“全局”变量,你应该在所有函数体之外声明它。所以应该是这样的。

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

但是你使用的任何东西都没有声明默认是全局的(注意它只在浏览器中工作)。

如果要创建局部变量,请在名称前添加var关键字,如下所示:

function report(period) {   

    var x = //...

}

我相信您的 aa 变量没有声明,因为在页面准备好之前调用了 report 函数。

给jQuery() 的函数中的所有内容都在DOM 准备好后运行,所以如果我写:

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

我得到“2, 1”而不是“1, 2”。

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

【讨论】:

    【解决方案2】:

    如果我正确理解您的场景,您将无法获取相关节点,因为通过 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
      }
    })
    

    【讨论】:

      猜你喜欢
      • 2016-08-21
      • 2012-03-02
      • 2011-01-18
      • 2015-05-02
      • 1970-01-01
      • 2012-06-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多