$(...).each 不是函数

$(...).each is not a function

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

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

var anArray = [];

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

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

我也试过使用

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

但是,我再次得到的是 TypeError: $.each 不是一个函数?

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

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

Here 工作 fiddle.

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

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

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

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

Note: For Chrome, do not expect $ is always jQuery.

您可以将 $ 放入控制台以检查它是否 returns 默认 ƒ $(selector, [startNode]) { [Command Line API] },如果是则意味着 $ 没有为 jQuery.

定义

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

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

首先,你可以把这个代码片段

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 放入控制台,如果它不是 returns undefined,而是 returns ƒ (t){return e.$===w&&(e.$=Kt),t&&e.jQuery===w&&(e.jQuery=Jt),w},这意味着 $ 没有为 [=21 定义=]现在。

接下来您可以继续输入您的区域代码,您会发现现在可以正常使用了。

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


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

参考: Chrome DevTools Snippets

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

.

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