2012-10-27 84 views
2

我想從一個按鈕調用第一函數傳遞一些參數「fadesIn()」到另一個功能「複選框()」,這將繼續檢查,如果第一形象已經衰落之前褪色第二個圖像。來傳遞參數我試圖期運用參數傳遞給另一個函數在JavaScript

function.apply(this, arguments); 

然後調用使用陣列位置的必需的參數。不幸的是,我無法使其在我的網頁上工作。我只是在學習,所以有可能是我失蹤的東西...任何幫助,非常感謝。

var time; 

function fadesIn(args){ 
    fadeOut(arguments[1]); 
    check.apply(this, arguments); 
    check(); 
} 

function check(args){ 
    if(document.getElementById(arguments[1]).style.opacity < 0.1){ 
     fadeIn(arguments[0]); 
     clearTimeout(time); 
     return; 
    } 
    time=setTimeout(function(){check()},100); 
} 

fadesIn('pic1', 'pic2'); 

吉茲你們是反應神速..感謝..

這是淡入和淡出功能,他們從開發YouTube上的PHP

var fade_in_from = 0; 
var fade_out_from = 10; 

function fadeIn(element){ 
    var target = document.getElementById(element); 
    target.style.display = "block"; 
    var newSetting = fade_in_from/10; 
    target.style.opacity = newSetting; 
    // opacity ranges from 0 to 1 
    fade_in_from++; 

    if(fade_in_from == 10){ 
     target.style.opacity = 1; 
     clearTimeout(loopTimer); 
     fade_in_from = 0; 
     return false; 
    } 

    var loopTimer = setTimeout('fadeIn(\''+element+'\')',50); 
} 

function fadeOut(element){ 
    var target = document.getElementById(element); 
    var newSetting = fade_out_from/10; 
    target.style.opacity = newSetting; 
    fade_out_from--; 

    if(fade_out_from == 0){ 
     target.style.opacity = 0; 
     target.style.display = "none"; 
     clearTimeout(loopTimer); 
     fade_out_from = 10; 
     return false; 
    } 

    var loopTimer = setTimeout('fadeOut(\''+element+'\')',50); 
} 

我將有一個玩弄你的建議。

從螢火蟲誤差

類型錯誤:的document.getElementById(參數[1])是空

+0

凡'fadeOut'定義?您的JavaScript控制檯中有任何錯誤? –

+0

那麼'fadeIn'和'fadeOut'是在其他地方聲明的函數嗎?你在控制檯遇到什麼錯誤?什麼不能在你的頁面中工作? – Bergi

回答

0
check(); 
// and 
setTimeout(function(){check()},100); 

似乎會導致一些問題。你check函數希望(至少)兩個參數,否則document.getElementById(arguments[1])將返回null和訪問的該style屬性會引發異常。

當你只用兩個參數的話,那最好不要使用arguments對象,但只傳遞兩個參數:

function fadesIn(pic1, pic2) { 
    fadeOut(pic2); 
    check(pic1, pic2); 
} 

function check(argOne, argTwo){ 
    if(document.getElementById(argTwo).style.opacity < 0.1){ 
     fadeIn(argOne); 
     clearTimeout(time); 
     return; 
    } 
    time=setTimeout(function(){check(argOne, argTwo)},100); 
} 
+0

感謝您的幫助BERGI你是正確的......我能也許把該值到一個全局變量從內部fadesIn(),然後查詢,在檢查()函數,或者是你還有什麼建議,以達到相同的結果? – synthet1c

+0

我不知道你真正想做的事,但你已經向我們展示瞭如何在'arguments'傳遞成功 - 雖然我建議剛2命名參數 – Bergi

+0

這就是我想要做的[鏈接]( http://jsfiddle.net/synthet1c/7epJw/)js小提琴鏈接。不知道爲什麼它不能在JS Fiddle上工作,但在瀏覽器中它很好。我最終只是使用全局變量作爲信息的持有者,但最終可能會將其更改爲對象字面值以不污染全局名稱空間。感謝您的幫助 – synthet1c

相關問題