【问题标题】:passing arguments to another function in javascript将参数传递给javascript中的另一个函数
【发布时间】:2012-10-17 13:36:42
【问题描述】:

我正在尝试将一些参数从调用第一个函数“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上的develop 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);
}

我会考虑你的建议。

萤火虫的错误是

TypeError: document.getElementById(arguments[1]) 为空

【问题讨论】:

  • fadeOut 在哪里定义?您的 JavaScript 控制台中是否有任何错误?
  • 那么fadeInfadeOut 是在其他地方声明的函数吗?您在控制台中遇到什么错误?你的页面到底有什么不工作的地方?

标签: javascript function arguments


【解决方案1】:
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);
}

【讨论】:

  • 感谢您的帮助,Bergi 您是正确的...我可以将值从 fadesIn() 中放入一个全局变量中,然后在 check() 函数中查询,或者您还有什么其他的吗会建议达到相同的结果吗?
  • 我不确定您真正想要做什么,但您已经向我们展示了如何成功传递 arguments - 尽管我只推荐 2 个命名参数
  • 这就是我想做的linkjs 小提琴链接。不知道为什么它在 JS Fiddle 上不起作用,但在浏览器中它很好。我最终只使用了一个全局变量作为信息的持有者,但最终可能会将其更改为对象文字以不污染全局命名空间。感谢您的帮助
猜你喜欢
  • 2018-11-28
  • 1970-01-01
  • 1970-01-01
  • 2012-09-25
  • 2020-10-03
  • 2014-03-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多