私のウェブサイトの「functions.php」ファイルにいくつかのjQuery関数があります。以下の2つの機能はどちらも正常に機能しますが、Webサイトの他の部分で誤動作を引き起こすことに気づきました。しかし、それらを排除することにより、明らかに接続がまったくないにもかかわらず、これらの誤動作はなくなります。
たとえば、jQueryが他のページに適用されないようにしたり、要素の表示と非表示を切り替えて機能しないボタンを作成したりします。コードは正しいように思えます。助言がありますか?
jQuery(function($) {
var hieghtThreshold = $('#come-funziona').offset().top -76 -$(window).height()/3;
var hieghtThreshold_end = $('#come-funziona').offset().top +$('#come-funziona').height() -76 -$(window).height()/3;
$(window).scroll(function() {
var scroll = $(window).scrollTop();
if (scroll >= hieghtThreshold && scroll <= hieghtThreshold_end ) {
$('.come-funziona-lato').addClass('accendi');
} else {
$('.come-funziona-lato').removeClass('accendi');
}
});
});
-
jQuery(function($) {
var monthNames = ["gennaio", "febbraio", "marzo", "aprile", "maggio", "giugno", "luglio", "agosto", "settembre", "ottobre", "novembre", "dicembre"];
var dayNames = ["domenica", "lunedì", "martedì", "mercoledì", "giovedì", "venerdì", "sabato"];
var holidays = ["2019, 12, 8", // 8 DICEMBRE 2019
"2019, 12, 25", // 25 DICEMBRE 2019
"2019, 12, 26", // 26 DICEMBRE 2019
"2020, 1, 1", // CAPODANNO 2020
"2020, 1, 6", // EPIFANIA 2020
"2020, 4, 13", // PASQUETTA 2020
"2020, 4, 25", // 25 APRILE 2020
"2020, 5, 1", // 1 MAGGIO 2020
"2020, 6, 2", // 2 GIUGNO 2020
"2020, 8, 15", // 15 AGOSTO 2020
"2020, 11, 1", // 1 NOVEMBRE 2020
"2020, 12, 8", // 8 DICEMBRE 2020
"2020, 12, 25", // 25 DICEMBRE 2020
"2020, 12, 26", // 26 DICEMBRE 2020
"2021, 1, 1"]; // 1 GENNAIO 2021
var endDate = "",
noOfDaysToAdd = $(".valMixBeatVoce").html(),
count = 0;
var someDate = new Date(new Date().toDateString());
var numberOfDaysToAdd = noOfDaysToAdd;
someDate.setDate(someDate.getDate());
while (count < noOfDaysToAdd) {
endDate = new Date(someDate.setDate(someDate.getDate() + 1));
var isHoliday = holidays.find(holiday => endDate.getTime() == new Date(holiday).getTime());
if (isHoliday) {
console.log('holiday, skipping');
} else if (endDate.getDay() != 0 && endDate.getDay() != 6) {
count++;
}
}
$('#DateMixBeatVoce').html(dayNames[endDate.getDay()] + ' ' + endDate.getDate() + ' ' + monthNames[endDate.getMonth()]);
$('#DateMixBeatVoce2').html(dayNames[endDate.getDay()] + ' ' + endDate.getDate() + ' ' + monthNames[endDate.getMonth()]);
});
dev4lifeのアドバイスに従って、Paul Tの提案に従って、1行ずつコメントを外し、ブラウザコンソールを確認しました。エラーが発生する行は次のとおりですが、理由がわかりませんでした。
以下の両方の行で、コンソールブラウザに「UncaughtTypeError:Undefinedのプロパティ 'top'を読み取れません」と表示されます。
var hieghtThreshold = $('#come-funziona').offset().top -76 -$(window).height()/3;
。
var hieghtThreshold_end = $('#come-funziona').offset().top +$('#come-funziona').height() -76 -$(window).height()/3;
そして、以下の2行について、彼は次のように述べています。「UncaughtTypeError:endDate.getDayは関数ではありません」
$('#DateMixBeatVoce').html(dayNames[endDate.getDay()] + ' ' + endDate.getDate() + ' ' + monthNames[endDate.getMonth()]);
。
$('#DateMixBeatVoce2').html(dayNames[endDate.getDay()] + ' ' + endDate.getDate() + ' ' + monthNames[endDate.getMonth()]);
(質問の作成者に代わって投稿された解決策。質問から回答スペースに移動します)。
この方法で修正するのが正しいかどうかはわかりませんが、少なくとも機能します。ホームページのみに関数をロードさせました。
jQuery(function($) {
if ($('body.page-id-5749').length > 0) { // That's home page
var hieghtThreshold = $('#come-funziona').offset().top -76 -$(window).height()/3;
var hieghtThreshold_end = $('#come-funziona').offset().top +$('#come-funziona').height() -76 -$(window).height()/3;
$(window).scroll(function() {
var scroll = $(window).scrollTop();
if (scroll >= hieghtThreshold && scroll <= hieghtThreshold_end ) {
$('.come-funziona-lato').addClass('accendi');
} else {
$('.come-funziona-lato').removeClass('accendi');
}
});
}
});
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加