0

私が検索したところ、この問題を抱えているほとんどの人が関数名ではなく関数呼び出しを渡していることがわかりました。つまり、 setInterval(myFunc,100) ではなく setInterval(myFunc(),100) です

しかし、私はそうではなく、まだ機能しません...また、不透明度で parseFloat を使用して機能させる必要があると多くの人が言っているのを見ました。それを試してみましたが、それでも同じ結果が得られます。 ..

関数 runSubMenu1() は、if(i.style.opacity==1) 句を含めるかどうかに関係なく、1 回だけ実行されるように見えます。

ここからどこへ行くべきかわからない?アドバイス?

<script type="text/javascript">

var run;
var runOpt;

function openSubMenu1(item) {
    runOpt=item;
    run = setInterval(runSubMenu1,100);

}

function runSubMenu1()  {
    var i=document.getElementById('menu-1-'+runOpt);

    if(i.style.opacity==1){clearInterval(run);}
    else{i.style.opacity+=.1;}


}


</script>

編集: jfriend00 によって言及された変更が行われ、ページと共に送信された元の CSS で不透明度の値が 0 に設定されています。1 回の反復の後、不透明度は .1 のようです

4

1 に答える 1

0

文字列であるため、値を解析する必要があります。そうしないと+= .1失敗します。

    else { i.style.opacity = parseFloat(i.style.opacity) + .1; }

に追加.1して".1"います。結果: ".1.1"。この値を opacity に割り当てると、数値であるため数値パーサーが呼び出されますが、これは有効な数値ではないため失敗し、 にフォールバックし.1ます。間隔は無限にループしますが、0 から .1 までしか移動しないため、1 回だけ実行されたように見えます。

結果を表示するjsFiddleを次に示します。

于 2013-10-15T01:09:56.290 に答える