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;在上面的代码中,我想将新的div添加到具有类bucket_left的div集合中,这个div是从无限滚动中生成的。上面的代码运行良好,但在滚动上它附加了这么多div。那么我怎么只附加一次呢?
发布于 2013-02-20 17:13:59
在函数的末尾添加以下行:
function getH4() {
    // ...
    window.onscroll = null;
}发布于 2013-02-20 17:17:14
创建一个全局布尔变量并将其设置为false。再次在窗口滚动事件中将其设置为true,并使用if块检查变量为false。将您的代码放在if块中。
var isScrolled = false;
function getH4() {
    if(!isScrolled){
        //your code
    }
    isScrolled = true
}发布于 2013-02-20 17:31:47
您只需在JavaScript函数末尾将onscroll属性设置为none,如下所示:
window.onscroll = null;现在,当脚本第一次执行时,它将执行它的功能,上面的代码行会将onscroll设置为null,因此不会在鼠标滚动时调用任何事件,因此您的函数不会在事件中一次又一次地被调用,除非是第一次。
或者,您可以通过设置一个公共变量(比如var 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;
    }
}https://stackoverflow.com/questions/14976017
复制相似问题