コンソールでjQueryのエラーが発生した場合の対処法です。エラー発生の有無はjQueryのバージョンやfull版・slim版の違いによっても異なります。1系や2系の古いバージョンを最新の3系に変更すると発生する確率が高いです。
以下はスムーススクロール実装の際に発生したエラーです。
Uncaught Error: Syntax error, unrecognized expression: a[href^=#]
「Syntax error, unrecognized expression」は引用符のエラーです。対処法としては下記のように記述します。
//変更前
$('a[href^=#]').click(function(){
//変更後
$('a[href^="#"]').click(function(){
以下もスムーススクロール実装の際に発生したエラーです。
Uncaught TypeError: $(…).animate is not a function
slim版ではajax系と次のアニメーション系の関数(animate、fadeIn、fadeOut、fadeToggle、fadeTo、finish、stop、slideDown、slideUp、slideToggle)はサポートされていません。そのため、full版に変更が必要です。
//エラー箇所
$("html, body").animate({scrollTop:position}, speed, "swing");
//変更前
<script src="https://code.jquery.com/jquery-3.4.1.slim.js" integrity="sha256-BTlTdQO9/fascB1drekrDVkaKd9PkwBymMlHOiG+qLI=" crossorigin="anonymous"></script>
//変更後
<script src="https://code.jquery.com/jquery-3.4.1.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script>
以下はloadイベント使用時のエラーです。
Uncaught TypeError: e.indexOf is not a function
loadイベントはajaxのloadメソッドと区別するため、下記のように記述します。
//変更前
$(window).load(function(){
//変更後
$(window).on('load', function(){
以下はbuttonタグの存在チェック記述時のエラーです。
Uncaught TypeError: $(…).size is not a function
sizeメソッドは3系で廃止になったため、lengthプロパティに書き換えます。なお、lengthプロパティをsizeメソッドのようにlength()と記述するとエラーになります。
//変更前
if($('button').size()){
//変更後
if($('button').length){
以下は変数のスコープエラーです。
Uncaught ReferenceError: array is not defined
関数のスコープ内で宣言された変数は、関数の内側からのみ利用可能なローカル変数です。関数の外部からはアクセスできません。変数の宣言を関数の外側に出してグローバル変数にすれば、関数の内側・外側どちらからでもアクセスできます。
//変更前
$("ul li").each(function() {
var array = [];
array.push($(this).text());
});
console.log(array);
//変更後
var array = [];
$("ul li").each(function() {
array.push($(this).text());
});
console.log(array);
以下は文法エラーで、予期しない記号が見つかった場合に発生します。この場合はピリオドが対象です。
Uncaught SyntaxError: Unexpected token '.'
セレクタのクォーテーション閉じ忘れを修正すると、セレクタ内のピリオドを正常に認識してエラーが解消されます。
//変更前
var totoph = $(.toTop).innerHeight();
//変更後
var totoph = $('.toTop').innerHeight();





