0

要素がその上をスライドしているp間、ボタンをクリックすると要素が消えるようにする必要があります。要素がすでに非表示で、がすでにその上にあるdiv場合は、ボタンをクリックすると、が表示に戻るはずですが、1秒後にスライドがオフになります。pdivpdiv

最初の部分は正常に機能しますが、2番目のケースでは、代わりにの可視性プロパティで使用されるsetTimeout関数は機能しませんp

コードは次のとおりです。

function slide_wiki(){
    var wiki=document.getElementById('wiki_bar');
    var p_vita=document.getElementById('vita');
    var width=wiki.style.width;
    slide(wiki, 100);
    if(width!='0%'){
        setTimeout(function(){p_vita.style.visibility='visible'}, 1000);
        wiki.style.borderRight='1px solid #E0E0E0';
    }else{
        p_vita.style.visibility='hidden';
        setTimeout(function(){
            wiki.style.borderRight='0px solid white';
        }, 900);
    }
}

提案どおりにjsFiddleを作成しましたが、何らかの理由でスライド機能がまったく機能しません。それでも、必要なcssとjavascriptが存在するため、とにかく役立つはずです。 http://jsfiddle.net/bigcola317/GRs3V/5/

4

2 に答える 2

1

あなたのコードを見ることができなかったので、バグを追跡できませんでした。そのため、代わりに、単純な css トランジションを使用して実用的なソリューションを作成しました。それがあなたのために働くかどうか見てください:http://jsfiddle.net/joplomacedo/V3yat/

于 2012-07-05T22:44:18.357 に答える
0

解決しました。問題は、「p」が表示されていない場合にボタンをクリックした後、slide() が「div」で slide_close() 関数を実行し、「p」のスタイル属性に新しい値を設定することでした。問題は、スタイル属性が可視性プロパティで行われた設定を上書きする可能性があることであると推測したため、slide_close() 関数で setAttribute() メソッドを次のように変更してみました。

p_vita.style.width="...";
p_vita.style.marginLeft="...";

そしてそれはそれを機能させました。あまり明確ではありませんが、とにかくありがとう:)

于 2012-07-06T09:39:02.847 に答える