我试图从调用第一个函数“fadesIn()”的按钮传递一些参数到另一个函数“check()”,该函数将继续检查第一个图像是否在第二个图像淡入之前已经消失。要传递参数,我尝试使用
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);
}
我会玩你的建议。
来自firebug的错误是
TypeError:document.getElementById(arguments [1])为null
答案 0 :(得分: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);
}