eslint:no-undef-“ $`未定义”

时间:2020-06-09 12:30:17

标签: error-handling

我正在尝试使用Tampermonkey运行此脚本,但出现错误: eslint:no-undef-$未定义” 我在做什么错了?

脚本:

(function() {
    'use strict';

    restore();

    $('span.tag').each((n, span) => {
        let input = document.querySelector(`input#${span.getAttribute('for')}`);
        span.addEventListener('click', () => {
            store(`tags`, input.value, input.checked);
        });
    });
    $('#board, #title').change((e) => {
        store(e.target.id, e.target.value);
    });

    function restore(){
        let json = localStorage.getItem('create') || "{}";
        let data = JSON.parse(json);

        Object.keys(data).forEach(key => {
            switch(key){
                case "tags":
                    data[key].forEach(val => {
                        document.querySelector(`input[value="${val}"]`).setAttribute('checked', 'checked');
                        document.querySelector(`span[for="create_${val}"]`).classList.add('selected');
                    });
                    break;
                case "board":
                    document.querySelector(`#board option[value="${data[key]}"]`).setAttribute('selected', 'selected');
                default:
                    document.querySelector(`#${key}`).value = data[key];
                    break;
            }
        });
    }

    function store(key, value, checked) {
        let json = localStorage.getItem('create') || "{}";
        let data = JSON.parse(json);

        if(arguments.length === 3){
            data[key] = new Set(data[key]);
            if(checked) {
                data[key].add(value);
            } else {
                data[key].delete(value);
            }

            data[key] = Array.from(data[key]);
        } else {
            data[key] = value;
        }

        json = JSON.stringify(data);
        localStorage.setItem('create', json);
    }
})();

2 个答案:

答案 0 :(得分:1)

您需要先定义全局变量。只需在顶部添加以下行:

/* globals jQuery, $, waitForKeyElements */

也不要忘记在==UserScript==行之间使用jquery:

// @require      http://code.jquery.com/jquery-3.x-git.min.js

答案 1 :(得分:0)

实际上这是一个匿名函数,在某些情况下,您可能必须传递jQuery

尝试类似:

(function($) {
'use strict';

    $('body').css('background', 'red');
})(jQuery);

不过,您需要在运行此脚本的页面中包含一些jquery CDN或您想在哪里使用它。