大きくても単純なスクリプトに問題があります。ボタンをクリックするときに、いくつかの div の背景を強調表示する必要があります。スクロール機能を追加して他の色付けルールを追加するまで、すべてが正しく機能します。
スクロールに次の JavaScript コードがあります。
$(document).ready(function(){
$(window).scroll(function()
{
var $top1 = $('.container_img_banchi_idraulici').offset().top + 330;
var $top_bpf = $('#BPF-T3000').offset().top -100;
if (($(window).scrollTop()>$top_bpf) && $('.hidden_combinati').css("display") == "block")
{
color_bpf_t3000();
}
if (($(window).scrollTop()<$top_bpf) && $('.hidden_combinati').css("display") == "block")
{
no_color_bpf();
}
およびその他の関数コード:
COLOR_BPF:
function color_bpf_t3000(){
for (i = 0; i<BPF_T3000.length; i++){
$('#'+BPF_T3000[i]+'.rettangolo_test').animate({ backgroundColor: color_green });
$('#'+BPF_T3000[i]+' + a').css('font-weight', 'bold');
}
for (i = 0; i<BPF_T3000_optional.length; i++){
$('#'+BPF_T3000_optional[i]+'.rettangolo_test').animate({ backgroundColor: color_yellow });
$('#'+BPF_T3000_optional[i]+' + a').css('font-weight', 'bold');
}
}
NO_COLOR
function decolora_bpf(){
reset_colors();
for (i = 0; i<combinati.length; i++){
$('#'+combinati[i]+'.rettangolo_test').animate({ backgroundColor: color_green });
$('#'+combinati[i]+' + a').css('font-weight', 'bold');
}
}
RESET_COLOR
function resetta_colori(){
$('.rettangolo_test').css('background-color', color_white);
$('.rettangolo_test + a').css('font-weight', 'normal');
}
何が起こるかというと、.hidden_combinati に display none がある場合でも no_color_bpf が実行されるということです。
しかし、次のようなコードを書くと
if (($(window).scrollTop()<$top_bpf) && $('.hidden_combinati').css("display") == "block")
{
alert("hello");
no_color_bpf();
}
すべて正常に動作します。
表示がなくなる前に関数が実行されているようです。.delay() やその他の方法で関数を遅らせようとしましたが、解決する方法はありません。
何かアドバイス?
ありがとう!
EDIT 1 var scrolltop = $(window).scrollTop();
console.log("scrolltop "+scrolltop);
console.log("top_Btp "+top_bpf);
console.log("display " +$('.hidden_combinati').css("display"));
console.log("if " + scrolltop<top_bpf && $('.hidden_combinati').is(':visible'));
console.log("if2 " +scrolltop < top_bpf);
console.log("if2 " +scrolltop > top_bpf);
出力は次のようになります。
top_Btp 911
display block
false
false
false
scrolltop 506
top_Btp 911
display block
false
false
false
scrolltop 507
top_Btp 911
display block
false
false
false
scrollTop が Top_bpt を超えた場合でも同様です。
私は何を間違っていますか??