簡體   English   中英

為什么添加后參數會停止功能

[英]Why Parameter Stops Function When Added

我有一個正在嘗試使用函數中的參數執行的代碼,即-

function startFadeEffect(elem){ };

我已經使elem等於全局范圍內的變量b,其中b是圖像數組。 含義-

var elem = b[imgNumb];

imgNumb是一個全局變量為“ 0”的變量,在函數內部定義為

imgNumb = imgNumb + count;

現在,我當前的代碼“不帶”參數可以正常使用-

function startFadeEffect(){
    var opacSetting = noOpac / 10;
    b[imgNumb].style.opacity = opacSetting; 
    b[imgNumb].style.display = "block";
    noOpac++;
    if(noOpac < 0){
        opacSetting = 0;    
    }
    if(opacSetting == 1){
        clearTimeout(timer);
        b[imgNumb].style.opacity = 1;
        noOpac = 0;
        return false;
    }
    var timer = setTimeout(startFadeEffect, 75);
}

但是,當我使用這樣的參數時,它對我不起作用:(

function startFadeEffect(elem){
    var opacSetting = noOpac / 10;
    elem.style.opacity = opacSetting;   
    elem.style.display = "block";
    noOpac++;
    if(noOpac < 0){
        opacSetting = 0;    
    }
    if(opacSetting == 1){
        clearTimeout(timer);
        elem.style.opacity = 1;
        noOpac = 0;
        return false;
    }
    var timer = setTimeout(startFadeEffect(elem), 75);
}

請注意,我已經在文件的全局范圍內定義了elem變量。 另外,我只是在尋找JS解決方案,沒有像JQuery這樣的庫! 謝謝

這部分不正確:

setTimeout(startFadeEffect(elem), 75);

它應該是:

setTimeout(function () {
    startFadeEffect(elem);
}, 75);

setTimeout需要一個函數作為它的第一個參數。 startFadeEffect(elem)立即執行(並且不返回函數)。 因此,發生的情況是startFadeEffect遞歸調用自身,直到opacSetting == 1破壞了遞歸。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM