3
function getH4() {
    var xyz = document.getElementsByClassName('bucket_left');
    for(var i=0;i<xyz.length;i++){
        var x=document.getElementsByTagName("h4")[i].innerHTML;
        var current_bucket = xyz[i];
        var y=current_bucket.firstChild.href;
        var newdiv = document.createElement('div');
        newdiv.innerHTML = "<a href=\""+y+"\">"+x+"</a>";
        newdiv.className = "hover_title_h4";
        current_bucket.appendChild(newdiv);
    }
}

window.onscroll=getH4;

上記のコードでは、クラスを持つsのdivセットにnewを追加したいと思います。これは、無限スクロールから生成されたものです。上記のコードは正常に機能していますが、スクロールすると非常に多くのが追加されます。では、どうすれば1回だけ追加できますか?divbucket_leftdivdiv

4

4 に答える 4

6

関数の最後に次の行を追加します。

function getH4() {
    // ...

    window.onscroll = null;
}
于 2013-02-20T09:13:59.167 に答える
1

グローバルブール変数を作成し、それを false に設定します。ウィンドウのスクロール イベントで再度 true に設定し、if ブロックを使用して変数が false であることを確認します。そのifブロック内にコードを入れてください。

var isScrolled = false;

function getH4() {
    if(!isScrolled){
        //your code
    }
    isScrolled = true
}
于 2013-02-20T09:17:13.790 に答える
1

onscrollJavaScript 関数の最後で、次のようにプロパティを noneに設定するだけです。

window.onscroll = null;

スクリプトが初めて実行されると、その機能が実行され、上記の行はonscrollを null に設定するため、マウスのスクロール時にイベントを呼び出さないため、イベントで関数が何度も呼び出されることはありません。初めて。

または、 public var sayvar check = 0を設定して論理的に処理し、初めて入力したときに変数を 1 に設定することもできます。そのため、値を確認し、checkそれに基づいて関数を実行する必要があります

var check = 1;
function getH4() {
    if(check==1)
    {
    var xyz = document.getElementsByClassName('bucket_left');
    for(var i=0;i<xyz.length;i++){
        var x=document.getElementsByTagName("h4")[i].innerHTML;
        var current_bucket = xyz[i];
        var y=current_bucket.firstChild.href;
        var newdiv = document.createElement('div');
        newdiv.innerHTML = "<a href=\""+y+"\">"+x+"</a>";
        newdiv.className = "hover_title_h4";
        current_bucket.appendChild(newdiv);
     }
        check=0;
    }
}
于 2013-02-20T09:31:46.550 に答える
0

これを試すことができます:スクロールすると、チェックはfalseに等しくなり、追加イベントは1回だけ発生します。スクロールが終了(マウスアップまたはマウスアウト)すると、チェックが真になり、再度追加できます。

var check = true;
function getH4(event) {
    event.target.onmouseup = function() {
        check = true;
    }
    event.target.onmouseout = function() {
        check = true;
    }
    if (check) {
        var xyz = document.getElementsByClassName('bucket_left');
        for(var i=0;i<xyz.length;i++){
            var x=document.getElementsByTagName("h4")[i].innerHTML;
            var current_bucket = xyz[i];
            var y=current_bucket.firstChild.href;
            var newdiv = document.createElement('div');
            newdiv.innerHTML = "<a href=\""+y+"\">"+x+"</a>";
            newdiv.className = "hover_title_h4";
            current_bucket.appendChild(newdiv);
        }
    check = false;
}

window.onscroll=getH4
于 2013-09-19T08:34:28.467 に答える