【问题标题】:$(...).each is not a function$(...).each 不是函数
【发布时间】:2015-11-01 22:18:21
【问题描述】:

我正在尝试使用网络控制台获取页面上所有 h2 标记内的文本。

所有我发现都说要使用每个,我都试过了

var anArray = [];

$('h2').each( function(i,e) {
    anArray.push($(e).innerHTML);
});

但它返回 TypeError: $(...).each 不是函数。

我也尝试过使用

$.each('h2', function(i,e) {
        anArray.push($(e).innerHTML);
    });

但同样,我得到的只是TypeError: $.each 不是一个函数?

【问题讨论】:

  • 你加载了 jQuery 吗?
  • 还要从这里的元素“e”获取 html,您应该使用 e.get(0) 或 e[0] 将 jquery 对象解包到 DOM 元素。
  • 我猜,$('h2').innerHTML 可以获取第一个 h2 标签,所以我想应该加载 jQuery?
  • 啊,好吧,我猜它没有加载..它现在可以工作了,谢谢。
  • 我遇到了这样的错误,但像@M.Sa 一样,我能够执行一些 jQuery 操作。问题原来是我的控制台针对的是我的扩展之一,而不是“顶部”

标签: jquery each typeerror


【解决方案1】:

1)粘贴:

var script = document.createElement('script');
script.src = "https://ajax.googleapis.com/ajax/libs/jquery/1.6.3/jquery.min.js";
document.getElementsByTagName('head')[0].appendChild(script);

在您的控制台上(包括 jQuery)

2) 等待 1 秒并粘贴:

var h2Arr = [];
$('h2').each( function() {
    h2Arr.push($(this).html());
});

现在,该页面的h2标签的所有内容都应该存储到h2Arr中

【讨论】:

  • 要使这种加载 JQuery 的方法起作用,您可能需要通过编辑 DOM 来打开网页的安全性,如下所示:stackoverflow.com/a/59531227/137948
  • 也可以通过如下代码添加“等待”来包含在单个复制粘贴中: setTimeout(() => { }, 1000);
【解决方案2】:

如果你写的代码像没有 $() 例如

var1.each(function(){}) //its wrong//each function is not defined error

$(var1).each(function(){}) //its right

【讨论】:

    【解决方案3】:

    注意:对于 Chrome,不要期望 $ 总是 jQuery

    您可以将$ 放入控制台以检查它是否返回默认ƒ $(selector, [startNode]) { [Command Line API] },如果是则表示未为jQuery 定义$。

    幸运的是,我们有以下方法可以尝试:

    1. 解决使用$的冲突,让jQuery没有任何歧义

    首先,你可以把这段代码sn -p

    var jq = document.createElement('script');
    jq.src = "https://code.jquery.com/jquery-3.3.1.min.js";  /* Include any online jquery library you need */
    document.getElementsByTagName('head')[0].appendChild(jq);
    

    进入控制台, 然后将$.noConflict放入控制台,如果不返回undefined,而是返回ƒ (t){return e.$===w&&(e.$=Kt),t&&e.jQuery===w&&(e.jQuery=Jt),w},则说明$现在没有为JQuery定义。

    接下来您可以继续输入您的区域代码,然后您会发现它现在可以正常工作了。

    参考https://blog.wplauncher.com/run-jquery-in-chrome-console/


    1. 在 Chrome 中使用 .js 文件,然后调试 JavaScript 文件。

    参考:Chrome DevTools Snippets

    1. 此外,对于某些特定版本的 Chrome,UI 中有一个选项可以设置page context可能已删除此功能在最新版本中!)

    .

    【讨论】:

      【解决方案4】:

      你必须使用 .html() 而不是 .innerHTML:

      $.each($('h2'), function(index, value){
         alert($(value).html());
      });
      

      Here 一个工作小提琴。

      【讨论】:

      • 在网页上尝试 $.each is not a function 时,我仍然得到它。
      • 好的。所以你的jQuery有问题。也许,正如 cmets 中已经提到的,您还没有加载 jQuery。你能发布你所有的代码吗?
      【解决方案5】:

      此错误的最常见原因是您的网站中未包含 JQuery,这就是它显示此错误的原因。你必须在你的网站中包含 JQuery 或者用 vanilla js 重写你的代码。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-09-03
        • 2023-04-01
        • 1970-01-01
        • 2011-07-19
        • 2015-01-23
        • 2018-04-16
        • 2010-10-12
        • 1970-01-01
        相关资源
        最近更新 更多