$未定义Javascript [重复]

Posted

技术标签:

【中文标题】$未定义Javascript [重复]【英文标题】:$ is not defined Javascript [duplicate] 【发布时间】:2017-10-11 00:12:10 【问题描述】:

我正在编写一段当前在 tampermonkey 中的代码,但我无法弄清楚为什么我在 google chrome 的控制台中出现此错误,“执行脚本 'PalaceBOT' 失败!$ 未定义”,我有另一个使用相同主体的脚本,我没有遇到这些问题。

脚本:

// ==UserScript==
// @name         SupremeBOT
// @namespace
// @version      0.1
// @description
// @author       @alfiefogg_
// @match        http://www.supremenewyork.com/shop/*
// @exclude      http://wwww.supremenewyork.com/shop/cart
// @require      https://gist.github.com/raw/2625891/waitForKeyElements.js
// @require      http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js
// @grant        none
// ==/UserScript==
var mySize = "large"; //Change to appropriate size
var productSort = "accessories"; //Change to appropriate size
(function() 
    var articles = $(".product-grid-item clearfix");
    if(productSort != "all")
        for(var i = 0; i < articles.length;i++)
        
            var category = $(articles[i]).find("a").attr("href");
            if(category.indexOf(productSort) == -1)
                articles[i].remove();
                document.getElementsByClassName("product-grid-item clearfix")[4].click();
            
        
    
    waitForKeyElements("#img-main", exe);
)();
function exe()
    selectSize();
    goCheckout();

function goCheckout()
    var x = document.getElementById("add-remove-buttons");
    var z = x.getElementsByClassName("button")[0];

    if(z.className != "button remove")
        z.click();
        setTimeout(goCheckout ,100);
    else
        window.location = "https://www.supremenewyork.com/checkout";
    

function selectSize()
    var sizeObj = document.getElementById("size");
    for(var i=0,sL=sizeObj.length;i<sL;i++)
        if(sizeObj.options[i].text == mySize)
            sizeObj.selectedIndex = i;
            break;
        
    

请记住,这不是一个完成的脚本。

【问题讨论】:

请添加您的html @A.Fogg : 你在代码的什么地方加载了 jQuery? 查看 Liams 评论,这是一个重复的问题,其他答案可能是您的问题,并且不知何故 jQuery 库未加载到您的脚本中。 【参考方案1】:

从窗口对象中获取 jQuery

var $ = window.jQuery;

【讨论】:

将此行添加到脚本的顶部范围对我有用。我们只需要将 jquery 对象从 window 中取出,tampermonkey 将它从 // @require 中取出(并将其别名为 $)。像魅力一样工作,谢谢! 我想要某种方式来将其标记为已识别,就像在 JSLint 中一样,无需添加额外的代码语句,只需添加注释即可。它已经存在于页面上。 您能进一步解释一下吗?【参考方案2】:

除了this,我没有找到更好的答案。

一般来说,这段代码定义了库,以便在 Tampermonkey 编辑器中进一步使用。

/*globals MY_LIB*/ 使用它会取消所有警告。

有关更多信息,请查看此 (https://jshint.com/docs/#inline-configuration)。 它解释了什么是全局变量,以及它们是如何工作的。

【讨论】:

【参考方案3】:

你需要包含 JQuery $ 不是常规 javascript 的一部分

【讨论】:

以上是关于$未定义Javascript [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在javascript中检查未定义的类型[重复]

JavaScript |未定义的索引[重复]

如何在 JavaScript 中处理“未定义”[重复]

如何在 JavaScript 中处理“未定义”[重复]

javascript中未定义的Object.length [重复]

未捕获的 ReferenceError:$ 未定义(PHP 中的 JavaScript/HTML)[重复]