2

最初の関数「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 です

4

1 に答える 1

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

いくつかの問題を引き起こすようです。あなたのcheck関数は [少なくとも] 2 つの引数を期待します。それ以外の場合document.getElementById(arguments[1])は戻り、そのプロパティにnullアクセスするとstyle例外がスローされます。

まったく 2 つの引数しか使用しないため、argumentsオブジェクトを使用せずに 2 つのパラメーターのみを渡すことをお勧めします。

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);
}
于 2012-10-27T15:07:09.483 に答える