2016-07-15 14 views
0

ボタンからclickイベントで実行する機能を持っています。それをクリックすると、私のメッセージ "Email was send!"が表示されます。フォームの代わりに。HTML要素(div)のコンテンツを数秒間変更します

5秒後、このメッセージは表示されなくなり、何も残っていません。 5秒後に元のコンテンツをdivに戻すにはどうすればよいですか?以下は私のスニペットです。

function myFunction() { 
    document.getElementById("form").innerHTML = "Email was send!"; 
    setTimeout(function() { 
     document.getElementById('form').style.display = 'none'; 
    }, 5000); 
} 

メッセージを5秒間表示してから元のフォームのコンテンツに戻したいとします。

+0

あなたのフォームにとどまるべきです。成功メッセージをあなたのページに追加し、5秒後にそれを消してください。 – CoderBoy

+0

代わりに、フォームを一時的に置き換えるのではなく、別の要素に成功メッセージを置き、もう1つを非表示にして、別の要素を表示する必要があります。 –

+0

新しい値を割り当てる前にinnerHTMLを保存しようとしましたか?その後、display noneを設定する代わりに、この保存された値でinnerHTMLを再度設定することができます。 – Berkay92

答えて

2

innerHTMLを変数に保存してから、後で設定することができます。ここに私の意味は次のとおりです:

function myFunction() { 
    var form = document.getElementById("form") 
    var originalContent = form.innerHTML 
    form.innerHTML = "Email was sent" 
    setTimeout(function() { 
    form.innerHTML = originalContent 
    }, 5000) 
} 

表示をnoneに設定する必要はありません。これは、フォームを完全に隠すことになります。

+0

もう一度やり直してください。私は誤ってタイムアウトの内側から大文字の「F」を持っていました。私はこれを訂正しました。 – Lew

+0

新しいコンテンツの周りにスパンを追加して、次のようなクラスを追加することができます:form.innerHTML = "メールが送信されました" – Lew

+0

メールを送信するコードはありませんあなたはそれのために別の関数を持っています、あなたはこの関数からそれを呼び出す必要があります。 – Lew

0

フォームボタンを表示しないためです。

+0

コメントを入力してください。 – Rohit416

2

あなたが求めていることをするには、電子メールメッセージに置き換える前にフォームの内容を保存してから、タイムアウトに戻すだけです。フォームの表示をnoneに設定すると、内容を変更せずに要素が非表示になります。

function myFunction() { 
    var old_html = document.getElementById("form").innerHTML; 
    document.getElementById("form").innerHTML = "Email was send!"; 
    setTimeout(function(){ 
     document.getElementById('form').innerHTML = old_html; 
    }, 5000); 
} 

これはあなたの問題を解決する必要がありますが、私は別の要素に電子メールメッセージを入れ、必要に応じて表示/非表示に推薦します。 5秒後にフォームの内容を置き換えるのであれば、フォームの内容を置き換えるのは実際には意味がありません。

0
<script> 
function myFunction() { 
     var originalContent = document.getElementById("form").innerHTML; 
     document.getElementById("form").innerHTML = "Email was send!"; 
     setTimeout(function() { 
        document.getElementById('form').innerHTML = originalContent; 
       }, 5000); 
    } 
</script> 
関連する問題